ajax 输出问题

//js
function Ajax(){
    var XHR=getHttpObject();
    if(!XHR) return false;
    XHR.open('GET',"/test/hello.php",true); //异步发送请求
    XHR.onreadystatechange = function() {
        if (XHR.readyState==4) {
            if ((XHR.status >= 200 && XHR.status < 300) || XHR.status == 304)         {
                var matches = XHR.responseText;
                if(matches.length>0) {
                    console.log(matches);
                }else{
                    console.log("can not output responseText");
                }
            }else{
                   console.log(XHR.status);
            }
        }
    };
    XHR.send(null);
    return true;
    }
    
    var btn = document.getElementById("btn");
    var bt = document.getElementById("bbb");
    var cc = document.getElementById("ccc");
    
        bt.addEventListener("click",function(){
            console.log("before ajax");
        });
        addEventHandler(btn,"click",Ajax());
        cc.addEventListener("click",function(){
                console.log("after ajax");
        });


    //HTML    
   <button id="btn" style="width: 120px; height: 30px; outline: none; font-size: 24px;">ajax</button>
   <button id="bbb" style="width: 120px; height: 30px; outline: none; font-size: 24px;">bbb</button>
   <button id="ccc" style="width: 120px; height: 30px; outline: none; font-size: 24px;">ccc</button>

为什么控制台会首先输出ajax数据,没有触发click事件,为什么直接输出到控制台,而使用

btn.onclick = function(){
    Ajax();
} //触发才输出

到底在哪里触发了?
图片描述

阅读 2.7k
1 个回答
addEventHandler(btn,"click",Ajax());

改为

addEventHandler(btn,"click",Ajax); 

试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题