2011-10-24 110 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

相关问题