window.onload = function() {
var oBtn = document.getElementById('btn');
oBtn.onclick = function() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if ( xhr.status == 200 ) {
alert( xhr.responseText );
}
}
}//教程中说把监听的事件函数写在xhr.open('get', '1.txt', true);xhr.send();前面比较好,为什么呢?
xhr.open('get', '1.txt', true);
xhr.send();
}
}
下面这么写也没处问题额?
window.onload = function() {
var oBtn = document.getElementById('btn');
oBtn.onclick = function() {
//打开浏览器
var xhr = new XMLHttpRequest();
//在地址栏输入地址
xhr.open('get','1.txt',true);
//提交
xhr.send();
//等待服务器返回内容
xhr.onreadystatechange = function() {
if ( xhr.readyState == 4 ) {
alert( xhr.responseText );
}
}
}
}
你下面的代码按照js运行时先发送数据,然后监听onreadystatechange
事件,假设如果数据交互快到比js的运行速度快(当然是不可能的,但是要有这个思考,这就很有灵性),那就监测不到了,还有就是
readyState属性:请求状态
open()
方法已经被调用send()
方法已经被调用,响应头也已经被接收responseText
属性已经包含部分数据可以看出到你写的下面的代码是有可能检测不到1这个状态值的(我没试过,你可以试一下),而在1这个状态值里是可以搞事情的。
在这个状态中,可以通过 setRequestHeader()
方法来设置请求的头部,可以调用 send()
方法来发起请求。