写了一个函数返回值是 true 或者 false
但是在调用的时候却返回 undefined如例: function chk() { return false }在另一个例子调用时:var ba=chk();return ba 却返回 undefined为什么????
但是在调用的时候却返回 undefined如例: function chk() { return false }在另一个例子调用时:var ba=chk();return ba 却返回 undefined为什么????
<script>
function chk() { return false }
function test(){var ba=chk();return ba}alert(test());
</script>没出现undefined,LZ怎么调用的?
xmlHttp = GetXmlHttpObject(); var url = "ActionUser.asp?a=chkuser&s="+escape($("Account").value); xmlHttp.onreadystatechange = function() { if(xmlHttp.readyState == 1){ $("strAccount").innerHTML="请梢后,正在发送中..."; $("strAccount").className="Reg"; } if (xmlHttp.readyState == 4){ var result = xmlHttp.responseText; var json = eval("(" + result + ")"); $("strAccount").innerHTML=json.innerHTML; $("strAccount").className=json.className; var reUrl=(json.reValue=="True"?true:false);return reUrl;}}; xmlHttp.open("GET",url,true); xmlHttp.send(null);
}调用function blurchk(objid) {
var valueBack = true; var valueObjid = $(objid).value;
if(objid=="Account") {if(valueObjid=="") {$("str"+objid).innerHTML = "请输入您常用的Email,即用来登录您的帐户。";$("str"+objid).className = "Error";valueBack = false; } else { if(checkEmail("Account","strAccount","帐户输入格式不正确,为Email格式!")==true) { valueBack=AjaxCheckAccount();alert(valueBack); }}} }
return ba也在一个函数里?
xmlHttp.send(null);
return "test";
还是返回 undefined 啊~~
function AjaxCheckAccount() {
var reUrl;
xmlHttp = GetXmlHttpObject(); var url = "ActionUser.asp?a=chkuser&s="+escape($("Account").value); xmlHttp.onreadystatechange = function() { if(xmlHttp.readyState == 1){ $("strAccount").innerHTML="请梢后,正在发送中..."; $("strAccount").className="Reg"; } if (xmlHttp.readyState == 4){ var result = xmlHttp.responseText; var json = eval("(" + result + ")"); $("strAccount").innerHTML=json.innerHTML; $("strAccount").className=json.className; reUrl=(json.reValue=="True"?true:false);return reUrl;}}; xmlHttp.open("GET",url,true); xmlHttp.send(null); alert(reUrl);
}我在 reUrl=(json.reValue=="True"?true:false); 代码后加入 alert(reUrl) 就会返回 true 或 false
但在 xmlHttp.send(null); 后面就返回 undefined
类4:
onreadystatechange=callbackfun;
http://stackoverflow.com/questions/562412/return-value-from-function-with-an-ajax-call
解决方法:把所有用ajax从服务端取回的数据后的操作放进callback回调函数中操作。
我看了,可以说按他那个来的,可是还是不行啊~~function AjaxCheckAccount() {
var reAccount=false;
xmlHttp = GetXmlHttpObject();
var url = "ActionUser.asp?a=chkuser&s="+escape($("Account").value);
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 1) {
$("strAccount").innerHTML="请梢后,正在发送中...";
$("strAccount").className="Reg";
}
if (xmlHttp.readyState == 4){
var result = xmlHttp.responseText;
var json = eval("(" + result + ")");
$("strAccount").innerHTML=json.innerHTML;
$("strAccount").className=json.className;
reAccount=(json.reValue=="True"?true:false);
}
}
alert(reAccount);
return reAccount;
}如果我不给变量初始值,还是去返回undefined
var reAccount=false;
xmlHttp = GetXmlHttpObject();
var url = "ActionUser.asp?a=chkuser&s="+escape($("Account").value);
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 1) {
$("strAccount").innerHTML="请梢后,正在发送中...";
$("strAccount").className="Reg";
}
if (xmlHttp.readyState == 4){
var result = xmlHttp.responseText;
var json = eval("(" + result + ")");
$("strAccount").innerHTML=json.innerHTML;
$("strAccount").className=json.className;
reAccount=(json.reValue=="True"?true:false);
}
}
alert(reAccount);
return reAccount;
}
这是有问题的。
ajax是异步执行的。也就是说它不是按你的顺序从上往下执行。当ajax发送请求时,服务器端要处理,要时间,这时候,js继续往下执行,reAccount根本就还没有值。