function getValue()
{debugger
    var xx ="我靠为什么获取不到值";
        var url = "AjaxHandler.ashx?p=1&psize=10&num=" + Math.random();
        var oo = new ActiveXObject("Microsoft.XMLHTTP");
        oo.open("GET",url,true);
        oo.onreadystatechange=function()
        {
            if(oo.readyState==4)
    {
    if(oo.Status==200)
    {
    xx =  oo.responseText;//这里赋值是成功的
    }
    else
    {
    alert("error:"+oo.statusText);
    }
    }
        }
        oo.send(null);
        return xx;    
}
function wokao()
{
  var t = getValue()
  alert(t);//为什么获取不到值呢?
}

解决方案 »

  1.   


        function getValue()
        {debugger
            var xx ="我靠为什么获取不到值";
            var url = "AjaxHandler.ashx?p=1&psize=10&num=" + Math.random();
            var oo = new ActiveXObject("Microsoft.XMLHTTP");
            oo.open("GET",url,true);
            oo.onreadystatechange=function()
            {
                if(oo.readyState==4)
                {
                    if(oo.Status==200)
                    {
                        xx =  oo.responseText;//这里赋值是成功的
                           //在这里执行
                           alert(xx);
                    }
                    else
                    {
                        alert("error:"+oo.statusText);
                    }
                }
            }
            oo.send(null);        /*
              oo.send(null);执行后,马上会执行 return xx;
              此时, onreadystatechange还没有运行!        */
            return xx;    
        }    getValue();你没有理解Ajax的真谛啊!
      

  2.   

    什么叫"哪位应该怎么写呢?"?? 打错了 我是说那么应该怎么写呢
    if(oo.Status==200)
                    {
                        xx =  oo.responseText;//这里赋值是成功的
                           return xx ;//这样也返回不了值啊
                           //在这里执行
                           alert(xx);
                    }
    麻烦高手 liuyar 在解释一下
      

  3.   

    ajax是异步执行的 所以必须在执行到了responseText之后继续 否则是无法得到值的
      

  4.   

    是不是ajax返回的值不能通过 function方式返回呢
      

  5.   


    你上面的return xx;只是监听函数的返回值,并不是getValue函数的返回值
    最好在监听函数里调用处理函数,即:xx = oo.responseText;dealFn(xx);//处理函数
    function dealFn(xx){
       alert(xx);
    }
      

  6.   

    var xx 定义成全局变量 试试
      

  7.   


        function getValue()
        {debugger
            var xx ="我靠为什么获取不到值";
            var url = "AjaxHandler.ashx?p=1&psize=10&num=" + Math.random();
            var oo = new ActiveXObject("Microsoft.XMLHTTP");
            oo.open("GET",url,true);
            oo.onreadystatechange=function()
            {
                if(oo.readyState==4)
                {
                    if(oo.Status==200)
                    {
                        xx =  oo.responseText;//这里赋值是成功的
                         return xx;  //既然这里赋值是成功的,那就在这里返回啊!!!
                    }
                    else
                    {
                        alert("error:"+oo.statusText);
                    }
                }
            }
            oo.send(null);
        
        }
    function wokao()
    {
      var t = getValue()
      alert(t);//再试试看
    }
      

  8.   


     function getValue()
        {debugger
            var xx ="我靠为什么获取不到值";
            var url = "AjaxHandler.ashx?p=1&psize=10&num=" + Math.random();
            var oo = new ActiveXObject("Microsoft.XMLHTTP");
            oo.open("GET",url,true);
            oo.onreadystatechange=function()
            {
                if(oo.readyState==4)
                {
                    if(oo.Status==200)
                    {
                      xx   =  oo.responseText;//这里赋值是成功的
    if(!xx) xx="wokao";
    wokao(xx);
                    }
                    else
                    {
                        alert("error:"+oo.statusText);
                    }
                }
            }
            oo.send(null);
            return xx;    
        }
    function wokao(t)
    {
      //var t = getValue()
      alert(t);//为什么获取不到值呢?
    }