2010-02-02 4 views
5

Ich baue eine kleine Chrome-Erweiterung, die Nachrichten über eine POST-HTTP-Anfrage an einen Server in meinem Firmennetzwerk senden muss, und ich benutze jQuery 1.4. 1 um die Entwicklung des Javascript-Teils zu beschleunigen.jQuery.ajax() sendet POST-Anfragen als GET in einer Chrome-Erweiterung

ich diesen Code haben die Anfrage zu senden:

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");    
     } 
    });  
} 

Der Antrag auf diese Weise getan fehlschlägt, in der Chrome log ich sehe, dass der Server mit einem HTTP-Status reagiert 400 und mit dem Text „Diese Methode erfordert POST".

Wenn ich Code ändern oben mit diesem:

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) 
    }); 
} 

alles funktioniert gut, der HTTP-Status 200 und Server-Seite kann ich sehen, dass die Daten, die ich geschickt korrekt gespeichert werden.

Ich muss die vollständige $ .ajax() -Methode verwenden, weil ich einige Arbeit im Falle von Erfolg oder Misserfolg tun muss, und einige andere, wenn die Anfrage abgeschlossen ist, so ist $ .post() nicht genug.
Mache ich etwas falsch, wenn ich $ .ajax() anrufe, oder gibt es ein Problem, vielleicht weil ich im xontext einer Chrome-Erweiterung bin?

Dank

Antwort

13

Ich glaube, die $.ajax() Funktion eine 'Typ' Option hat, keine 'Methode' Option.

Der Standardtyp ist GET.

+0

Sie haben absolut Recht :) Ich ging eine Million Mal durch die jQuery-Dokumentation und bemerkte nie, dass ich die falsche Option verwendete. Danke, dass du mir das gezeigt hast! –

+0

Überraschenderweise brauchte ich eine lange Zeit, um das Problem zu lösen ... Wenn ich einen POST von derselben Domain machte, würde es tatsächlich POST verwenden, wenn ich 'Methode' drin hatte. Aber sobald ich versuchte, von einer anderen Domain 'Cross-Domain' zu POST zu kommen, würde es GET werden. Das hat es gelöst. Keine Ahnung, warum "Methode" auf derselben Domain funktioniert. – Futile32