一个ajax参数问题

lghyt 发布于 2016/06/08 11:21
阅读 246
收藏 0

在做一个ajax实验时,因为错写了一个赋值等于符号,没想到竟弹出两次,这是为了什么呢

++++++++++++++++++++++++++++++++++++++++

<script>
        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();
            }
        }
        
    </script>

++++++++++++++++++++++++++++++++++++++++

上面代码中标红的地方应该用双等号,但我错写了一个等号,但也弹出,不过多弹了一次,第一次弹出的是空白,第二次弹出的是我要的内容,为啥多弹一次呢?

加载中
0
阿信sxq
阿信sxq
什么赋值等与符号
lghyt
lghyt
就是赋值的符号
0
IdleMan
IdleMan

第一次xhr.readyState不等于4,但用来个赋值 仍然为ture,返回内容为空;

第二次恰好等于4,赋值 仍然为ture,返回有内容;


我觉得alert两次是碰巧,网络差可能alert很多次吧

lghyt
lghyt
嗯,这个解释很明白,多谢
0
月生无界
月生无界

试了一下,你把打印的内容改成某一个字符串,其实每次打印都会打印出来,然后,打印的不是两次,而是三次,具体的内部逻辑不是很懂

0
lghyt
lghyt
其实这个例子让我在思考 编程中 = 触发时,都做了些啥,看来它也有 ==的功能
0
WolfX
WolfX
每次readyState改变都会执行onreadystatechange,xhr.readyState=4等同true,所以执行多次,另外手动赋值readyState不会触发onreadystatechange
返回顶部
顶部