如何使用 jQuery 调用 .net Web Service 是最佳方式?

4

我希望能够仅使用jquery从另一个域调用.net webservice。

最好的方法是什么?在托管网页的网站上是否需要注意任何配置更改?

我问这个问题的原因是,我只能在那个区域进行有限的更改,对此没有完全的控制。

6个回答

3

默认情况下,浏览器不允许XMLHTTPRequest在跨域时进行调用。您可以更改浏览器设置以使某些调用成功,但这被认为是不良做法。

为了执行跨域请求,您可以:


3

我认为你的问题是进行跨域调用。你需要将 jQuery 请求的数据类型更改为 jsonp

请查看这个链接


+1,可能需要一些问者无法进行的更改,但将可在跨域中工作。 - orip

1

0

首先,我不确定在所有浏览器(Firefox 3)中,像jQuery实现的跨站点ajax是否能够正常工作。 其次,我猜你是在谈论SOAP Web服务。我宁愿不这样做,因为它将非常复杂。


0

更好的方法是使用Jquery.getJSON吗?

See: JQuery.getJSON

这引出了一个问题,如何使用Web服务或类似机制输出符合JSON标准的数据。

在 Web 服务上使用 [ScriptService] 属性,以允许从客户端脚本调用它。默认情况下将返回 JSON - http://msdn.microsoft.com/en-us/library/system.web.script.services.scriptserviceattribute.aspx - Russ Cam
与JQuery的$.ajax({});命令一起使用,类似于调用Web服务(例如此处 - http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/),应该可以满足您的要求。 - Russ Cam

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 中,否则您将无法以这种方式访问 Web 服务:
<system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
</system.web>

那是客户端的 web.config 还是 webservices? - Bravax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接