素材牛VIP会员
关于Ajax写的顺序的好坏
 ha***ee  分类:JavaScript  人气:655  回帖:2  发布于6年前 收藏

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 );
        }
        
    }
    
}

}

 标签:htmljavascript

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv1 新人
十***刻 产品经理 6年前#1

你下面的代码按照js运行时先发送数据,然后监听onreadystatechange事件,假设如果数据交互快到比js的运行速度快(当然是不可能的,但是要有这个思考,这就很有灵性),那就监测不到了,还有就是
readyState属性:请求状态

  • 0 (初始化)还没有调用open()方法0是监听不到的
  • 1 open()方法已经被调用
  • 2 send()方法已经被调用,响应头也已经被接收
  • 3 下载中;responseText 属性已经包含部分数据
  • 4 (完成)响应内容解析完成,可以在客户端调用了

可以看出到你写的下面的代码是有可能检测不到1这个状态值的(我没试过,你可以试一下),而在1这个状态值里是可以搞事情的。
在这个状态中,可以通过 setRequestHeader() 方法来设置请求的头部,可以调用 send() 方法来发起请求。

Lv4 码徒
L***灬 软件测试工程师 6年前#2

ajax执行他执行某个方法之后 寻找对应的下一个方法 和书写顺序没关系

但是建议按顺序写 遵循JS书写规律和执行规律

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取