2009-04-07 2 views
3

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

$.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);} 
      }); 


И как я должен конфиг этот WebService?

ответ

7

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

&callback=? 

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

только поймать, что сервер вы делаете запрос должен поддерживать JSONP

Более детальную информацию см это сообщение в блоге о том, чтобы JSONP работу с новым раз йорк JSon API:

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

0

Выполнение запросов для других доменов запрещено в большинстве браузеров из-за Same origin policy.

Несколько исключений являются

  • пользователя расширений, как GreaseMonkey
  • Javascript включает из тега сценария
  • Adobe Flash приложение с правильно настроенным сервером
+0

У меня нет права редактировать, но вы должны правильно называть greasemonkey. – Benson

0

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

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

0

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

1

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

Смежные вопросы