2
我已经创建了webMethod在页面上,那些方法将在客户端用$ .ajax()调用。第一个Webmethod正在处理耗时的任务。任务需要超过8分钟才能完成。在对第一个方法进行ajax调用之后,立即调用另一个Web方法,该方法在一秒或两秒钟内完成。因此,我应该立即从第二个WebMethod ajax调用中获得响应。但在这里,在这种情况下,第二个Web方法不会执行直到第一个呼叫完成。以下示例模拟我的场景。多个Ajax调用不是异步工作
[WebMethod]
public static string PullData(int snapshotId)
{
string str = "Pull Started: " + DateTime.Now.ToString() + "\n";
Thread.Sleep(30000);
str += "Pull End: " + DateTime.Now.ToString();
return new JavaScriptSerializer().Serialize(str);
}
[WebMethod]
public static string CheckStatus(int snapshotId)
{
return new JavaScriptSerializer().Serialize("Check Status" + DateTime.Now.ToString());
}
以下是Javascript调用按钮单击。
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function pullData(){
$.ajax({ type: 'POST',
url: 'Default.aspx/PullData',
data: '{ snapshotId: 101 }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
var curMsg = $("#message").attr("innerHTML") + "<br />";
$("#message").attr("innerHTML", curMsg + msg.d);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}
});
CheckStatus();
return false;
}
function CheckStatus() {
//alert("this is check status");
$.ajax({ type: 'POST',
url: 'Default.aspx/CheckStatus',
data: '{ snapshotId: 101 }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
var curMsg = $("#message").attr("innerHTML") + "<br />";
$("#message").attr("innerHTML", curMsg + msg.d);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}
});
return false;
}
</script>
在这上面的电话的checkStatus方法应该返回响应,前PullData方法返回的响应。但CheckStatus执行后PullData完成其工作。
我可能会在这里失踪或不知道完整的行为。请帮忙!!!
有没有人遇到过这个问题?