JQuery AJAX может вызвать внешний веб-сервис? - PullRequest
3 голосов
/ 07 апреля 2009

Может ли jquery ajax-код вызвать веб-сервис с другого доменного имени или с другого веб-сайта?
Как это:

 $.ajax({
            type: "POST",
            url: "http://AnotherWebSite.com/WebService.asmx/HelloWorld",
            data: "{'name':'" + $('#price').val() + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {alert(msg);}
            });


И как мне настроить этот веб-сервис?

Ответы [ 5 ]

7 голосов
/ 07 апреля 2009

вы можете использовать JSONP для выполнения междоменных запросов. с помощью jquery вы можете сделать запрос jsonp, используя функцию $ .json и указав обратный вызов в URL:

&callback=?

На самом деле все, что вам нужно, это вопросительный знак в качестве значения параметра, имя параметра может быть любым.

Единственное замечание: сервер, к которому вы обращаетесь, должен поддерживать jsonp

Для получения более подробной информации см. Этот пост в блоге о том, как заставить jsonp работать с json api из New York Times:

http://notetodogself.blogspot.com/2009/02/using-jquery-with-nyt-json-api.html

1 голос
/ 07 апреля 2009

Вам необходимо использовать вызов JSONP. Последние два абзаца на этой странице . Пройдите основы.

0 голосов
/ 07 апреля 2009

Что обычно делается, так это чтобы ваш jQuery вызывал веб-сервис на вашем сервере, и чтобы этот веб-сервис связывался с внешним веб-сервисом. Не самый предпочтительный метод, но он работает.

0 голосов
/ 07 апреля 2009

Нет, запрос чего-либо от веб-сервера, отличного от того, с которого пришел ваш код, является основой так называемой атаки Cross Site Scripting (XSS) . Таким образом, эта способность запрещена. Есть способы обойти это, но в лучшем случае они взломаны.

Больше всего я слышал о написании флеш-приложения, которое устанавливает TCP-соединение с данным сервером.

0 голосов
/ 07 апреля 2009

Запросы на другие домены запрещены в большинстве браузеров из-за Одинаковая политика происхождения .

Несколько исключений:

  • расширения на стороне пользователя, например GreaseMonkey
  • включение JavaScript из тега сценария
  • Adobe Flash приложение с правильно настроенным сервером
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...