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