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