2010-02-02 17 views
5

Buduję małe rozszerzenie Chrome, które musi wysyłać wiadomości za pośrednictwem żądania http POST do serwera w mojej sieci firmowej i używam jQuery 1.4. 1, aby przyspieszyć rozwój części javascript.jQuery.ajax() wysyła żądania POST jako GET w rozszerzeniu do Chrome

Mam ten kod, aby wysłać żądanie:

function send() { 
    $.ajax({ 
     url: "http://mycompany.com/update", 
     method: "POST", 
     data: {status: "sometest", in_reply_to_status_id: "anId"}, 
     success: function(data, textStatus) { 
      console.log("success"); 
      console.log(data); 
      console.log(textStatus); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
      console.log("error"); 
      console.log(XMLHttpRequest); 
      console.log(textStatus); 
      console.log(errorThrown); 
     }, 
     complete: function(XMLHttpRequest, textStatus) { 
      console.log("complete");    
     } 
    });  
} 

Żądanie wykonane w ten sposób nie powiedzie się, w Chrome zalogować widzę, że serwer odpowie stanu HTTP 400 i z tekstem „To metody wymaga STANOWISKO".

Jeśli zmienię do kodu powyżej z tym:

function send() { 
    $.post("http://sunshine.emerasoft.com/statusnet/api/statuses/update.xml", {status: "sometext", in_reply_to_status_id: "anId"}, function(data) { 
     console.log(data) 
    }); 
} 

wszystko działa poprawnie, status HTTP 200 i po stronie serwera Widzę, że dane wysłałem jest poprawnie zapisane.

Potrzebuję użyć pełnej metody $ .ajax(), ponieważ muszę wykonać pewną pracę w przypadku powodzenia lub niepowodzenia, a jeszcze inne, gdy żądanie jest zakończone, więc $ .post() to za mało.
Czy robię coś złego, dzwoniąc do $ .ajax(), lub jest jakiś problem, może dlatego, że jestem w xontekście rozszerzenia Chrome?

Dzięki

Odpowiedz

13

wierzę funkcja $.ajax() zajmuje opcję 'typ', a nie opcję 'metoda'.

Domyślnym typem jest GET.

+0

Masz całkowitą rację :) Przeszedłem przez dokumentację jQuery milion razy i nigdy nie zauważyłem, że użyłem niewłaściwej opcji. Dzięki za wskazanie mi tego! –

+0

Co zaskakujące, zajęło mi to dużo czasu, aby rozwiązać ... Podczas wykonywania testu POST z tej samej domeny, używałbym POST, gdy miałem tam "metodę". Ale gdy tylko spróbuję POST z innej domeny "między domenami", w końcu będzie GET. To rozwiązało problem. Nie mam pojęcia, dlaczego "metoda" działa w tej samej domenie. – Futile32

Powiązane problemy