function ajax(href){
            var req = new XMLHttpRequest();
            req.onreadystatechange = function(){
                if (req.readyState == 4) {
                    return req.responseText;
                }
            };
            req.open("GET", href, false);
            req.send(null);
        }
var b,c;
c=ajax('a.js');
alert(c)a.js里 只要一行 alert("ssss")为什么我取不到值??我是放在web服务器下执行的
谢谢

解决方案 »

  1.   


      if (req.readyState == 4) {       if(req.status== 200 ){
              return req.responseText;
         }
                       
                    }
      

  2.   

    自己弄明白了 
    下面是正确的var a;
            function ajax(href,cb){
                var req = new XMLHttpRequest();
                
    req.onreadystatechange = function(){
                    if (req.readyState == 4) {
       
    a=req.responseText;
                    }
                };

                req.open("GET", href, true);
                req.send(null);
            }
    ajax('a.txt')
    window.onclick=function(){
    alert(a)
    }
      

  3.   


    你没明白,或者说是假明白或半明白半糊涂。
    真正的原因是异步时(req.open("GET", href,false);),不可以使用onreadystatechange调用回调函数;而是要直接处理:function ajax(href){
      var req = new XMLHttpRequest(); 
      req.open("GET", href, false); 
      req.send(null);
      //直接处理:
      alert(req.responseText)
    }
      

  4.   

    同意楼上 观点。
    open(参数1,参数2,参数3)
    参数3布尔类型,true表示异步,false表示同步,
    异步的时候会去执行onreadystatechange设置的回调函数,而同步时不会。。
      

  5.   

    var a;
            function ajax(href,cb){
    var req = new XMLHttpRequest();
    req.onreadystatechange = function()
    {
    if (req.readyState == 4)
    {
    if(cb)cb(req.responseText)
    }
    };
    req.open( "GET", href, true);
    req.send(null);
    }
    ajax('a.txt',function(x){
    alert(x)
    })
      

  6.   

    var a;
            function ajax(href,cb){
    var req = new XMLHttpRequest();

    req.open( "GET", href, false);
    req.send(null);
    if(cb)cb(req.responseText)//这要放在send下面
    }
    ajax('a.txt',function(x){
    alert(x)
    })
    谢谢6楼