2011-07-22 37 views
0

好的,我創建了一個可用的javascript ajax文件,但它會生成這些dom異常的荒謬數字。我不確定這是爲什麼,因爲從我所看到的情況來看,我所稱的所有元素目前仍然存在。 的代碼是在這裏:INVALID_STATE_ERR:DOM異常11

window.onload = function(){init();} 

function init() { 
    ajax = ajaxInit(); 
    setInterval(function(){ajaxContact(ajax);},2000); 
    ajaxContact(ajax); 
    ajax.onreadystatechange = function() {update(ajax);} 
} 

function ajaxInit() { 
    if (window.XMLHttpRequest) { 
     ajax = new XMLHttpRequest(); 
    } 
    else { 
     if (window.ActiveXObject) { 
       ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    } 
    if (ajax) { 
     document.getElementById("status").innerHTML = "AJAX initialized"; 
     return ajax; 
    } 
    else { 
     docuement.getElementById("status").innerHTML = "Error: AJAX not available"; 
     return false; 
    } 

} 

function ajaxContact(ajax) { 
    try { 
     ajax.open("GET","updateAjax.php?" + "ran=" + Math.random(),true); 
     ajax.send(); 
    } 
    catch (err) { 
     alert(err.message); 
     document.getElementById("status").innerHTML = "Error contacting server"; 
     document.getElementById("loading").src = "images/redx.png"; 
    } 
} 

function update(ajax) { 
     if (ajax.readyState==4 && ajax.status==200){ 
      dataObj = eval('(' + ajax.responseText + ')'); 
      document.getElementById("status").innerHTML = dataObj.status; 
      document.getElementById("frameNumber").innerHTML = 
      "Frame:" + dataObj.firstFrame + "/" + dataObj.lastFrame; 
      document.getElementById("thumbnail").src = dataObj.imgSrc; 
     } 
     if (ajax.status==404) { 
      document.getElementById("status").innerHTML = "Ajax updater not found"; 
      document.getElementById("loading").src = "images/redx.png"; 
     } 
} 
+0

ajax.responseText是什麼樣的? – Dennis

回答

1

你可能試圖調用開放併發送 ajax,但如果請求尚未通過 setInterval每次調用之間的兩秒鐘之內完成它拋出的錯誤。您需要檢查每個電話是否已經發送了 ajax對象或準備好打開(檢查 ajax.readyState)。

在鉻,線

if (ajax.status==404) { 

通過訪問狀態將導致錯誤之前ajax.readyStateHEADERS_RECEIVED(2),LOADING(3),DONE(4)。嘗試製作

if (ajax.readyState == 4 && ajax.status==404) { 

確保在訪問狀態之前對象已準備就緒。

+0

我試過,但似乎沒有任何影響:( –

相關問題