可以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应用程序,配置正确的服务器