要让 ASP.NET SOAP Web 服务 (asmx) 与 jQuery 一起使用,您首先必须将 ScriptServiceAttribute(在 System.Web.Script.Services 中找到)添加到服务本身:
[ScriptService] // <--- here
public class MyWebService : WebService
{
[WebMethod]
public int Sum(int x, int y)
{
return x + y;
}
}
如果项目不是作为 ASP.NET AJAX 项目创建的,您可能需要使用以下内容修改您的 web.config:
<configuration>
<system.web>
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpHandlers>
</system.web>
</configuration>
(注意 - 使用适当的版本更新 System.Web.Extensions 程序集引用 - 这是针对 ASP.NET AJAX 1.0 的,它不是最新的。我没有 2.0 的信息,否则我会发布它。)
jQuery 代码可以这样写:
$.ajax({
type: "POST",
url: "/MyWebService.asmx/Sum",
data: "{x: 2, y: 5}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
$("#Result").html(msg);
}
});
请注意,这将破坏任何依赖 XML 服务的客户端——为了回答这个问题,我假设 Web 服务的唯一消费者将是使用 jQuery 或至少是 JavaScript 的网站。如果您需要同时支持这两种情况,则需要创建两个 Web 服务。