jQuery.ajax () отправляет POST-запросы как GET в расширении Chrome - PullRequest
5 голосов
/ 03 февраля 2010

Я создаю небольшое расширение Chrome, которое должно отправлять сообщения через HTTP-запрос POST на сервер в сети моей компании, и я использую jQuery 1.4.1 для ускорения разработки части javascript.

У меня есть этот код для отправки запроса:

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 и текстом «Этот метод требует POST».

Если я перейду на код выше с этим:

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?

Спасибо

1 Ответ

13 голосов
/ 03 февраля 2010

Я полагаю, что функция $. Ajax () принимает параметр типа, а не метод.

Тип по умолчанию - GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...