2010-02-02 2 views
5

Я создаю небольшое расширение 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?

Благодаря

ответ

13

Я считаю, что функция $.ajax() принимает параметр «тип», а не вариант «метод».

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

+0

Вы абсолютно правы :) Я просмотрел документацию jQuery миллион раз, и я никогда не замечал, что использовал неправильный вариант. Спасибо, что указали мне это! –

+0

Удивительно, но это заняло у меня много времени, чтобы решить ... При выполнении POST из того же домена он фактически использовал бы POST, когда у меня был «метод». Но как только я попытался выполнить POST из другого домена «кросс-домен», он будет GET. Это разрешило это. Не знаю, почему «метод» работает в том же домене. – Futile32