2009-04-07 59 views
3

jquery ajax代码可以从另一个域名或其他网站调用web服务吗?
像这样:
可以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);} 
      }); 


,我应该如何配置此WebService?

回答

7

可以使用JSONP做跨域请求。使用jQuery你可以用$上传.json功能并指定一个回调的网址像这样使JSONP请求:

&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 2009-04-07 19:17:43

0

没有,请求来自web服务器的东西不是来自你的代码的东西,而是所谓的Cross Site Scripting (XSS)攻击的基础。因此,这种能力是被禁止的。有办法解决这个问题,但他们充其量只能算是黑客。

一个我听说过的最大约是写一个Flash应用程序,使一个TCP连接到有问题的服务器。

0

我们通常做的是有你的jQuery打电话给你的服务器上的Web服务,并具有Web服务与外部Web服务通信。不是最喜欢的方法,但它的工作原理。

1

您需要使用JSONP调用。最后两段在这page。回顾一下基础知识。