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完成其工作。
我可能會在這裏失蹤或不知道完整的行爲。請幫忙!!!
有沒有人遇到過這個問題?