我得到了以下堅持JS問題只是爲了IE 8-9,在其他瀏覽器我的代碼工作得很好。IE 8-9長循環JavaScript問題
案例: 我在JS下面的代碼,應該啓動一些服務器進程,並更新與服務器端的狀態,什麼jQuery用戶界面提供進度條:
$("#btnSendUser").click(function (event) {
$.ajax({
type: "POST",
url: "/StartLongProcess",
dataType: "json",
traditional: true,
data: { userIds: users },
success: function (result) {
console.log("Process start");
}
});
var processId = 0;
getStatus(processId);
});
function getStatus(processId) {
var url = '/GetStatus';
$.get(url, { clientProcessId: processId }, function (data) {
if (!data.IsDone) {
$("#progress").progressbar({ value: data.Progress });
window.setTimeout("getStatus(" + processId + ")", 350);
}
else {
$("#progress").progressbar({ value: 100 });
console.log("Done");
};
});
}
在StartLongProcess在當前的方法控制器我開始長服務器進程以這種方式: ..讀取當前狀態
[ValidateInput(false)]
public void StartLongProcess(Guid[] userIds)
{
...
var processTask = new LongProcess(MesssageService.Email.SendMails);
processTask.BeginInvoke(service.LongProcess(userIds), new AsyncCallback(EndSendingProcess), processTask);
}
方法是下一個:
我在Chrome和FF中測試了這段代碼,在那些瀏覽器的進度條和進程中總是正確完成。但在IE 8-9中,它看起來像getStatus函數不能用這種方式調用。這是真的嗎?爲所有瀏覽器實現我的任務的最佳方式是什麼? 謝謝。
JavaScript代碼如何獲得進程ID值?它看起來像從上面的代碼始終爲零。 – Pointy 2012-01-18 15:46:47
你每1/350秒呼叫一個網址。你檢查網絡,看看是否有效? – 2012-01-18 15:48:29
@Pointy是我想的樣本代碼,寫入/修改服務器端。所以它根據用戶/會話而不同。 – 2012-01-18 15:49:44