我想仅使用jquery从另一个域调用.net webservice。
最好的方法是什么?在托管网页的网站上是否需要注意任何配置更改?
我问这个问题的原因是,我只能控制那个区域。 所以我只能做有限的改变。
答案 0 :(得分:3)
浏览器不允许在其默认配置中跨域进行XMLHTTPRequest调用。您可以更改浏览器设置以使某些呼叫成功,但这被认为是不好的做法。
为了执行跨域请求,您可以
Use the local server as a proxy to a remote server
此示例使用本地ASP.NET Web服务调用Yahoo!地理编码服务
此示例演示如何通过flickr API创建到flickr的桥接。
答案 1 :(得分:3)
我认为您的问题是进行跨域调用。您必须将jQuery请求的数据类型更改为jsonp
。
看看这个link
答案 2 :(得分:1)
通常,答案是否定的,假设您正在讨论ASPX Web服务(基本上是ASP.NET站点中托管的WebService)。
这是Google在搜索“webservice call jquery”时的第一个热门话题,它可以为您提供更多信息:
http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/ 您正在使用托管Web服务。)
答案 3 :(得分:0)
首先,我不确定jquery中实现的跨站点ajax是否适用于所有浏览器(firefox 3)。 其次,我假设您正在谈论SOAP Web服务。我宁愿不这样做。实施起来会非常复杂。
答案 4 :(得分:0)
以下是一个例子:
$.post("CodersWS.asmx/DeleteBook", { id_book: parseInt(currBookID, 10) }, function(res) {
///do something with returned data: res
});
在上面的例子中,我正在调用一个名为CodersWS.asmx
的Web服务,其中的WebMethod名为DeleteBook
...我也传递了一个名为id_book
的参数。
另外,请不要忘记将此代码段添加到web.config
,否则您将无法以这种方式访问网络服务:
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
答案 5 :(得分:0)