可以jquery ajax调用外部webservice?

jquery ajax代码可以从另一个域名或其他网站调用web服务吗?
像这样:

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

我应该如何配置这个Web服务?

您可以使用JSONP发出跨域请求。 使用jquery,你可以使用$ .json函数发出一个jsonp请求,并在url中指定一个回调,如下所示:

 &callback=? 

实际上,你需要的只是问号作为参数值,参数名称可以是任何东西。

只有catch,是你要求的服务器必须支持jsonp

有关更深入的信息,请参阅此博客文章,了解如何使jsonp与纽约时代json api一起使用:

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

您需要使用JSONP调用。 本页的最后两段。 了解基础知识。

不,从您的代码来源之外的Web服务器请求某些东西是所谓的跨站点脚本(XSS)攻击的基础。 因此,这种能力是被禁止的。 有很多方法,但它们充其量只是hacky。

我最常听到的一个是编写一个flash应用程序,它与相关服务器建立TCP连接。

通常做的是让您的jQuery在您的服务器上调用Web服务,并让该Web服务与外部Web服务进行通信。 不是最喜欢的方法,但它的工作原理。

由于Same origin策略 ,大多数浏览器都禁止对其他域发出请求。

一些例外是

  • 用户端扩展,如GreaseMonkey
  • javascript包含来自脚本标记
  • adobe flash应用程序,配置正确的服务器