Я создаю небольшое расширение Chrome, которое должно отправлять сообщения через HTTP-запрос POST на сервер в моей сети компании, и я использую jQuery 1.4. 1, чтобы ускорить разработку части javascript.jQuery.ajax() отправляет запросы POST как GET в расширение Chrome
У меня есть этот код, чтобы отправить запрос:
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");
}
});
}
Запрос сделано таким образом не удается, в Chrome войти я вижу, что сервер отвечает с состоянием HTTP 400 и с текстом «Этот метод требует ПОСЛЕ".
Если я изменяю код выше с этим:
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)
});
}
все работает отлично, статус HTTP 200 и на стороне сервера, я могу видеть, что данные, которые я послал правильно сохранен.
Мне нужно использовать полный метод $ .ajax(), потому что мне нужно сделать некоторую работу в случае успеха или неудачи, а некоторые другие, когда запрос будет завершен, так что $ .post() недостаточно.
Я делаю что-то не так, вызывая $ .ajax(), или есть какая-то проблема, может быть, потому, что я в xontext расширения Chrome?
Благодаря
Вы абсолютно правы :) Я просмотрел документацию jQuery миллион раз, и я никогда не замечал, что использовал неправильный вариант. Спасибо, что указали мне это! –
Удивительно, но это заняло у меня много времени, чтобы решить ... При выполнении POST из того же домена он фактически использовал бы POST, когда у меня был «метод». Но как только я попытался выполнить POST из другого домена «кросс-домен», он будет GET. Это разрешило это. Не знаю, почему «метод» работает в том же домене. – Futile32