首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

ajax 调用函数获取数据retun返回的是undefined 但是alert时却有值 请问一下是什么有关问题

2012-06-19 
ajax 调用函数获取数据retun返回的是undefined 但是alert时却有值 请教一下是什么问题?js 代码我是想实现

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;    } 

热点排行