AJax的頁面提示處理
現象:由於現有系統必須在b/s下實現實時數據顯示及tip顯示,當鼠標移到某一<div>時,系統采用AJax的方式向後台取數據。在取數據的過程中常常發現系統進程停頓的情況,主要表現為:所有系統進程停頓,鼠標不起作用。
原因:
原有系統采用了同步的方式進行提交,代碼如下:
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
XMLhttp.Open("post", "testto.JSP", false);//同步
XMLhttp.Send(doc);
return XMLhttp.responseText;
把上面的請求改為異步,即把XMLhttp.Open("post", "testto.JSP", true);時出現Javascript腳本錯誤。
解決辦法:
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
XMLhttp.Open("post", "maptipto.JSP", true);
XMLhttp.Send(doc);
XMLhttp.onreadystatechange=function(){ //回調函數
if(XMLhttp.readyState==4&&){
if(XMLhttp.status==200){
var text = XMLhttp.responseText;
//todo 處理函數
DOSometing();
} else {
alert("您所請求有異常。");
}
} else{
//提示函數
document.getElementById("messageDiv").innerHtml="讀取數據中,請稍候……";
}
}
說明:采用回調函數的方式處理請求。處理函數應該放在回調函數之內而不應該放在回調函數之外