2011-10-24 153 views
4

我喜歡做盡可能多的代碼儘可能不jQuery的,所以對於Ajax請求,我一直沿着什麼樣的MDN說行做的事情:XMLHttpRequest onload屬性?

function alertContents(httpRequest) { 
    try { 
    if (httpRequest.readyState === 4) { 
     if (httpRequest.status === 200) { 
     alert(httpRequest.responseText); 
     } else { 
     alert('There was a problem with the request.'); 
     } 
    } 
    } 
    catch(e) { 
    alert('Caught Exception: ' + e.description); 
    } 
} 

我一直在尋找在谷歌的教程製作擴展和他們使用他們的請求onload。在ready狀態爲4且狀態爲200時,onload是否正在運行事件偵聽?如果不是,它是什麼,什麼時候使用它而不是上面的方法。

+0

爲什麼不實施它,看看它何時起火?我要給它一個機會 –

+0

許多「ajax包裝」在'readyState === 4'上稱爲成功。給這個頁面一個鏡頭,它展示了一個包含'onSuccess'方法的'AJAX'包裝器的好例子:http://www.ibm.com/developerworks/library/wa-aj-ajaxhistory/index.html –

回答

2

具有交叉原點的XHR級別2實現了除onreadystatechange之外的其他事件,這些事件是進度事件(指定statechange); loadstart,進度,錯誤,中止,加載,加載

你可以使用onload事件作爲預先檢查readystate 4,並繼續檢查XHR狀態(200 - > 300 || 304我想象)

+0

OP說'onload',你指的是'load',這是哪一個? –

+0

「load」是事件名稱,偵聽它的屬性是「onload」。 Think:request.onload = function ... and request.addListener(「load」,function ...) – Omri

相關問題