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}
 

解决方案 »

  1.   

    return ajax.responseText;   //这样呢
      

  2.   

    不得 还是undefined
     但是alert(ajax.responseText)却可以弹出正常值
      

  3.   

    不明白 return data=ajax.responseText; 这样有什么意义?直接在
    if(ajax.status==200){  
      
    }
    这里操作 responseText 或 dom 即可
      

  4.   

    每次 都要传入不同的参数 到sql 
    sql从msql.php取回数据 后再由xmone函数调用 
      

  5.   

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