2010-02-02 19 views
5

Estoy construyendo una pequeña extensión de Chrome que debe enviar mensajes a través de una solicitud HTTP POST a un servidor en la red de mi compañía, y estoy usando jQuery 1.4. 1 para acelerar el desarrollo de la parte javascript.jQuery.ajax() envía solicitudes POST como GET en una extensión de Chrome

Tengo este código para enviar la solicitud:

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 solicitud hace de esta manera no funciona, en el Chrome ingrese veo que el servidor responde con un código de estado HTTP 400 y con el texto "Este método requiere ENVIAR".

si cambio de código anterior con esto:

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

todo funciona bien, el estado HTTP es 200 y del lado del servidor que se puede ver que los datos que envié se guarda correctamente.

Necesito usar el método completo $ .ajax() porque necesito trabajar en caso de éxito o fracaso, y otro cuando la solicitud está completa, por lo que $ .post() no es suficiente.
¿Estoy haciendo algo mal llamando $ .ajax(), o hay un problema de algún tipo, tal vez porque estoy en el contexto de una extensión de Chrome?

Gracias

Respuesta

13

creo que la función $.ajax() toma una opción de 'tipo', no es una opción 'método'.

El tipo predeterminado es GET.

+0

Tiene toda la razón :) Revisé la documentación de jQuery un millón de veces y nunca me di cuenta de que estaba usando la opción incorrecta. ¡Gracias por señalarme esto! –

+0

Sorprendentemente, esto me llevó mucho tiempo resolver ... Al hacer una POST desde el mismo dominio, usaría POST cuando tuviera el 'método' allí. Pero tan pronto como traté de POSTAR desde un dominio diferente 'dominio cruzado' terminaría siendo OBTENIDO. Esto lo resolvió. No tengo idea de por qué 'método' funciona cuando está en el mismo dominio. – Futile32

Cuestiones relacionadas