jQuery.ajax () envia solicitações de postagem como Get em uma extensão do Chrome
-
25-09-2019 - |
Pergunta
Estou construindo uma pequena extensão do Chrome que deve enviar mensagens através de uma solicitação HTTP post para um servidor na rede da minha empresa e estou usando o JQuery 1.4.1 para acelerar o desenvolvimento da peça JavaScript.
Eu tenho este código para enviar a solicitação:
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");
}
});
}
A solicitação feita dessa maneira falha, no log do Chrome que vejo que o servidor responde com um status HTTP 400 e com o texto "Este método requer postagem".
Se eu mudar para o código acima com isso:
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)
});
}
Tudo funciona bem, o status HTTP é 200 e o lado do servidor, posso ver que os dados que enviei foram salvos corretamente.
Preciso usar o método $ .ajax () completo, porque preciso fazer algum trabalho em caso de sucesso ou falha, e alguns outros quando a solicitação estiver concluída, então $ .post () não é suficiente.
Estou fazendo algo errado chamando $ .ajax (), ou há algum tipo de problema, talvez porque eu esteja no Xontext de uma extensão do Chrome?
Obrigado
Solução
Eu acredito no $ .ajax () A função leva uma opção 'tipo', não uma opção 'método'.
O tipo padrão é Get.