JQuery 1.5 только отправляет запросы GET в методе AJAX - PullRequest
5 голосов
/ 05 февраля 2011

Я пытаюсь сделать PUT-запрос к веб-службе RESTful, однако, похоже, что jQuery 1.5 реагирует на любые изменения в настройке «type». Запрос отправляется как GET независимо от значения в типе. В jQuery 1.4 это не проблема.

Вот мой код:

$.ajax({
    type: "PUT",
    url: "https://api.somesite.com/v1.0/people/" + individualID + "/",
    dataType: "jsonp",
    data: $("#editProfile").serializeArray(),
    cache: "false",
    success: function(data,textStatus,jqXHR) {
        $.modal.close();
    },
    error: function(jqXHR,textStatus,errorThrown) {
        alert("Error!");
    }
});

Ответы [ 4 ]

6 голосов
/ 05 февраля 2011

Насколько я знаю, вы не можете сделать запрос JSONP через PUT.Поскольку JSONP работает, внедряя элемент <script>, указывающий на удаленный домен, этот запрос всегда будет GET-запросом.

Если вам абсолютно необходимо сделать PUT-запрос к удаленному домену, вам нужно либоиспользуйте серверный прокси в своем локальном домене или посмотрите на CORS, если вам не нужна поддержка IE.

0 голосов
/ 03 марта 2011

Я боролся с чем-то похожим.Я был в состоянии успешно отправить PUT до 1.5, но перестал работать с 1.5.Я знаю, что произошли большие изменения в том, как Ajax работает в 1.5, так что я рассмотрю это позже.Когда это сработало, у меня все заработало в сафари, Firefox и Chrome.Когда это сработает, вы сначала получите отправку OPTIONS и, как указано, прежде чем ваша серверная сторона должна будет удовлетворительно ответить на запрос OPTIONS в стиле CORS.Вот тестовый код, который работает для меня до 1.5, так что это возможно.Кроме того, я не смог заставить Firefox кешировать ответную часть OPTIONS на стороне клиента.Другие браузеры сделали.

http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" 

var url = 'http://api.example.com/rest/action?key=123ABC&data={"value":55}';
$.ajax({
  type: "PUT",
  url: url,
  data: {},
  success: function(msg){
    alert( "Data Saved: " + msg );
  },
  error: function(msg){
     console.debug(msg);
  }
});
0 голосов
/ 05 февраля 2011

Как мне поместить данные в Rails, используя JQuery , может быть?

edit: upps, вы не сказали, что веб-сервис был в Rails. Но это также может поддержать что-то подобное. Вы пытались просто отправить запрос POST?

0 голосов
/ 05 февраля 2011

Из документов jQuery.ajax () :

Тип запроса («POST» или «GET»), по умолчанию «GET».Примечание. Здесь также можно использовать другие методы HTTP-запроса, такие как PUT и DELETE, но они поддерживаются не всеми браузерами.

Возможно, с помощью дополнительной информации о браузере мы сможем выяснить, что вызываетпроблема, но сейчас кажется, что jQuery не хочет гарантировать функциональность, кроме как на GET и POST.Это удивительно для меня, чтобы узнать =)

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