2012-08-30 25 views
45

Poniższy kod wyzwala GET zamiast żądania HTTP POST.Ajax JQuery wysyła GET zamiast POST

function AddToDatabase() { 
    this.url = './api/add'; 
} 

AddToDatabase.prototype.postData = function(dataToPost) { 
$.ajax({ 
    type: "POST", 
    url: this.url, 
    data: dataToPost, 
    context: this, 
    success: this.onSuccess 
    }); 
}; 


var AddToDatabase = new AddToDatabase(); 
data = {data: 'coucou'}; 
AddToDatabase.postData(data); 

Dlaczego i jak mogę uzyskać POST?


Widzę w Google Chrome Inspect i Firefox Sprawdź, czy przeglądarka wysyła GET. Oto z Chrome:

Zapytanie URL: http: // localhost/Sample-KODY/UPDATE% 20MYSQL/api/dodać/ żądania metoda: GET kodem stanu: 200 OK


SOLVED

adresu URL o nazwie './api/add' był rzeczywiście pisać do './api/add/index.php'. Okazuje się, że wywołanie "./api/add /index.php" lub "./api/add /" daje mi żądanie POST.

To był po prostu zły adres URL, ale z jakiegoś powodu otrzymałem pomyślne żądanie GET do ".api/add /".

+2

Dlaczego sądzisz, że będzie to żądanie GET? –

+1

Czy próbowałeś uruchomić wywołanie ajax na firefox z panelu netto otwarty na firebug? – fcalderan

+2

[Test] (http://jsfiddle.net/4gh7M/) - jeśli uruchomisz to i sprawdzisz panel sieciowy, przekonasz się, że wysyła on prośbę o wpis: –

Odpowiedz

2

Dla mnie Twój kawałek kodu wyglądają ok, ale jeśli chcesz mieć pewność, można użyć .post $ zamiast $ .ajax

$.post('ajax/test.html', function(data) { 
$('.result').html(data); 
}); 

odnośnik jquery: http://api.jquery.com/jQuery.post/

+4

'post' jest po prostu skrótem dla $ .ajax ({type: 'POST'}) –

+0

Tak, ale jak twój kod wygląda dobrze. kiedy testuję to, to robi jakiś postowy wniosek –

1

wyjazdu Twój plik .htaccess lub wyszukaj inną rzecz, która może przekierować Twoją prośbę:

72

Niektóre problemy na MVC. Z jakiegoś powodu, gdy usuwam [HttPost], działa on zgodnie z oczekiwaniami, mimo że mówię ajaxowi, aby używał POST.

  • Okazuje się, trzeba użyć

typu: "POST"

  • Chociaż przykład na stronie jQuery mówi używać

metoda: "P OST”

Teraz Post

Ale po wykopaniu w dokumentacji znalazłem to.

enter image description here

+4

to jest problem, który miałem właśnie. nie zdawałem sobie sprawy, że nazwa opcji została zmieniona na 1.9. Myślałem, że to zawsze "metoda" –

+1

To samo co ja ... to samo co ja :) – ppumkin

+4

Właśnie uratowałeś mi życie !! +1 –

4

Zauważyłem ten problem, a także, gdzie jest mój post został wysyłanie GET. Scenariusz jest całkiem wyjątkowy, ale może ci to pomoże.

To działo się ze mną na mojej stronie edycji ról użytkownika, w której używałem ajax (post) jako natychmiastowej akcji, gdy rola została zaznaczona lub odznaczona.

Miałem też skonfigurowany serwer do ponownego uwierzytelnienia użytkownika (i przekierowania ich), ilekroć zmieniły się informacje o rolach, aby ich żądania zostały odświeżone.

Brutalna cykl skończył jako:

  1. pierwsza rola Update - Post - 200 powodzenie

  2. Następny Rola Update - POST - 302 znaleziono -> Redirect (zrobiłem zawiadomienie to nie aż użyłem Skrzypek zamiast monitora sieciowego Chrome)

  3. Przekierowanie połączeń z (2) (ten sam adres URL) - GET - 404 Not Found (Od ja tylko dozwolone post)

  4. GOTO (1)

skończyło się na zmianę serwera ominąć ponownego uwierzytelniania/twierdzi aktualizacji, gdy wykrył ajax żądania (na podstawie typów Akceptuj).

+0

Dziękuję bardzo! – machineaddict

1

Miałem podobny problem i zaczęło działać dla mnie, gdy tylko usunąłem zakodowany na stałe kod https:// z mojego adresu URL.

jQuery.ajax({ 
type: "POST", 
url: "www.someurl.com",//instead of "https://www.someurl.com" 
data: { foo:"bar"}, 
success: function(d){ console.log(d); }, 
dataType: "JSONP" 
}); 
13

miałem ten problem i za @ sugestią moda za to ponieważ mój .htaccess było usunięcie tylnej tnie - i ja ustawić adres URL do /ajax/foo/bar/ i nie /ajax/foo/bar. Przekierowanie zmienia żądanie z POST na GET. Usuń/i problem rozwiązany!

+0

Rozwiązało to dla mnie dokładny problem wspomniany w pierwotnym pytaniu. Zajmuję się aplikacją laravel na Wamp 3.0.6 – iko

+0

rozwiązało to dla mnie, dziękuję –

2

Miałem ten sam problem i znalazłem to pytanie, ale odpowiedzi nie rozwiązały mojego problemu. W końcu rozwiązuję to przez usunięcie pola contentType w żądaniu ajax.

contentType: "application/json", 
1

Miałem ten problem i okazało się, że jest to moduł do przepracowywania adresów URL w IIS.

Używam ASP.NET MVC i WebAPI. Utworzono regułę wymuszającą pisanie małymi literami, aby sieci społecznościowe nie wyświetlały tego samego adresu URL co dwie różne strony.

Na przykład:

"http://url.com/View/Something/123GuidIdSomething"

vs

"http://url.com/view/something/123guididsomething"

To jednak jakoś brudząc z moich żądań ajax. Wyłączyłem regułę i problem został rozwiązany.

7

Adres URL './api/add' został przekierowany na numer './api/add/index.php'.dlatego to dziwaczne boczne wpływają na którym nowy wniosek po przekierowaniu wysyłane przy użyciu GET zamiast POST

rozwiązanie

  • użyć pełnego adresu URL './api/add/index.php'
  • lub dodać ukośnik './api/add/'.
Powiązane problemy