我有一个.NET Web服务,我需要从jQuery异步命中,并根据从服务获得的结果更新网格。我的问题是,服务命中只是第一次异步,后续请求是同步的(即使在 ajax 调用中指定 async=true 之后),如下所示
jQuery.ajax({
type: "POST",
url: url,
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
success: function(msg) {
var result = msg.d;
return callback(result);
},
error: $.callDotNetSM.onError
});
我的 .NET 服务方法如下所示。
[WebMethod(EnableSession = true)]
public static string GetData()
{
}
因此,请帮助我始终异步调用服务。任何帮助都非常感谢。
调用 WebMethod 的页面需要在页面指令中包含以下内容:
<%@ Page Async="true" EnableSessionState="False" %>
这样做的原因是,ASP.NET 每次访问会话时都会锁定会话,使其无法异步运行。即使您不在 WebMethod 中使用会话,除非您另有说明,否则页面仍会默认使用它。
编辑:
您的问题也可能是您有EnableSession="true"
。您可能只需要将其设置为 false。