可以jquery ajax调用外部webservice?

时间:2009-04-07 19:09:30

标签: asp.net javascript jquery web-services

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


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

5 个答案:

答案 0 :(得分:7)

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

&callback=?

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

只有捕获,是您发出请求的服务器必须支持jsonp

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

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

答案 1 :(得分:1)

您需要使用JSONP调用。关于此page的最后两段。了解基础知识。

答案 2 :(得分:0)

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

一些例外是

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

答案 3 :(得分:0)

不,从您的代码来源之外的Web服务器请求某些内容是所谓的Cross Site Scripting (XSS)攻击的基础。因此,这种能力是被禁止的。有各种各样的方法,但它们充其量只是hacky。

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

答案 4 :(得分:0)

通常做的是让您的jQuery在您的服务器上调用Web服务,并让该Web服务与外部Web服务进行通信。不是最受欢迎的方法,但它有效。