2010-02-02 18 views
5

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

risposta

13

credo che la funzione $.ajax() prende un opzione 'tipo', non un'opzione 'metodo'.

Il tipo predefinito è GET.

+0

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! –

+0

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

Problemi correlati