Sto costruendo una piccola estensione Chrome che deve inviare messaggi attraverso una richiesta HTTP POST a un server nella mia rete aziendale, e sto usando jQuery 1.4. 1 per accelerare lo sviluppo della parte javascript.jQuery.ajax() invia richieste POST come GET in un'estensione Chrome
Ho questo codice per inviare la richiesta:
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");
}
});
}
La richiesta fatta in questo modo viene a mancare, nel Chrome registro vedo che il server risponde con un codice di stato HTTP 400 e con il testo "Questo metodo richiede INVIARE".
se cambio di codice di cui sopra con questo:
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)
});
}
tutto funziona bene, lo stato http è 200 e lato server posso vedere che i dati che ho inviato è correttamente salvato.
Ho bisogno di utilizzare il metodo $ .ajax() completo perché ho bisogno di fare un po 'di lavoro in caso di successo o fallimento, e alcuni altri quando la richiesta è completa, quindi $ .post() non è sufficiente.
Sto facendo qualcosa di sbagliato chiamando $ .ajax(), o c'è un problema di qualche tipo, forse perché sono in xontext di un'estensione di Chrome?
Grazie
Hai perfettamente ragione :) Ho esaminato la documentazione di jQuery un milione di volte e non ho mai notato che stavo usando l'opzione sbagliata. Grazie per avermelo fatto notare! –
Sorprendentemente mi ci è voluto molto tempo per risolverlo ... Quando eseguivo un POST dallo stesso dominio, in realtà utilizzava il POST quando avevo il "metodo" lì dentro. Ma non appena ho provato a postare da un dominio "cross-domain" diverso, sarebbe diventato GET. Questo lo risolse. Non ho idea del perché il "metodo" funzioni quando si trova nello stesso dominio. – Futile32