日期:2014-05-16  浏览次数:20293 次

ajax 调用函数获取数据retun返回的是undefined 但是alert时却有值 请教一下是什么问题?
js 代码 我是想实现 xmone函数里调用 sql函数的返回值 但是sql函数里return返回的调用是undefined 但是设置为alert弹出时 却能弹出正常值

求教各位大神怎样才可得到sql的正确返回值 并让xmone函数可以调用?(sql函数取回的是 数组 下面代码并没有转化没写有)

-------------------------------------------------------------------
unction sql(xm,id){ //调用数据库信息

ajax=createAjax();
ajax.open("post","../msql.php","false"); 
  ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
ajax.send("xm="+xm+"&zhid="+id);
ajax.onreadystatechange=function(){ 
if(ajax.readyState==4){
if(ajax.status==200){ 
return data=ajax.responseText;//得到的是undefined

//alert(data) 弹出就有正常值  
 
  }

}
}


}



function xmone(x,m){


var daobj=document.getElementById("fhxx");

ajax=createAjax(); 

var ww=(sql(x,m));  

 daobj.innerHTML=ww

}
 



------解决方案--------------------
ajax是异步执行的,当执行var ww=(sql(x,m));这一步时,返回值并未就绪,而且应该在sql里面返回值,而不是在onreadystatechange函数里。
解决的方法有2种:
1. 将ajax设为同步,然后在sql里返回值(不推荐,若服务器反应慢,容易造成页面卡住)
JScript code
    function sql(xm,id){
        ajax=createAjax();
        ajax.async=false;
        ...
        var result;
        ajax.onreadystatechange=function(){
            ...
            result=ajax.responseText;
        };
        return result;
    }