JS返回值的问题(AJAX)

代码如下:functionsendAjax(url,para){varres;vartheHttpRequest=getHttpObject();theHttpReque... 代码如下:
function sendAjax(url,para) {
var res;
var theHttpRequest=getHttpObject();
theHttpRequest.onreadystatechange=function(){processAJAX();}
theHttpRequest.open("GET",url+"?"+para,true);
theHttpRequest.send(null);
function processAJAX(){
if(theHttpRequest.readyState==4) {
if(theHttpRequest.status==200) {
if(unescape(theHttpRequest.responseText)=="true"){
return true;
}else{
return false;
}
}else {
return false;
}
return false;
}
}
}
实际上在processAJAX()这个函数中是能得到返回值的,可是因为是嵌套的function,外面的sendAjax无法获取值。
我需要实现的目标就是sendAjax(地址,参数),通过AJAX返回验证结果。
展开
 我来答
马后雷鼓下扬州5058
2013-05-22 · TA获得超过4321个赞
知道小有建树答主
回答量:693
采纳率:33%
帮助的人:800万
展开全部

建议你在 sendAjax 函数中加一个 callback(回调) 参数,然后在函数外面进行验证

这样函数可以用于其它 AJAX 请求,例如返回值不为 true 的时候。


function sendAjax(url,para,callback) {
            
    // ...
            
    if(theHttpRequest.status==200) {
        // 回调
        callback.call(this, theHttpRequest.responseText);
    }
            
    // ...
}


// 开始 AJAX 请求
sendAjax("some_page.html", "", function(data) {
    if(unescape(data)=="true"){
        // 处理 true 结果...
    }
    else{
        // 处理 false 结果...
    }
});
追问
  还是没有解决问题啊,
  我就是需要通过AJAX进行数据验证,如果正确就返回真,如果错误就返回假。
  由于有很多种验证,AJAX只是其中一个过程,所以必须要用function返回值这种形势的。
追答
你应该是没理解我上面的代码,验证虽然写在 ajax 函数外面,但 data 是通过 callback 这个回调函数传回来的,和在 ajax 函数内验证是一个道理的。

因为这个函数与普通函数不同,它里面有【异步请求】,函数不会等请求完毕再返回值。

但是,如果你一定要在函数内部进行验证,你可以使用【同步请求】。要注意的是同步请求的同时浏览器会被锁住,一切代码都要等请求完毕才继续执行。

下面是代码,不需要使用 processAJAX 函数,可以用匿名函数代替

function sendAjax(url,para) {
// 初始化返回结果为 false;
var res = false;

var theHttpRequest=getHttpObject();
theHttpRequest.onreadystatechange=function(){
if(theHttpRequest.readyState==4) {
if(theHttpRequest.status==200) {
if(unescape(theHttpRequest.responseText)=="true"){
res = true;
}
}
}
}

// 这里把第三个参数改为了 false,进行同步请求
theHttpRequest.open("GET",url+"?"+para,false);
theHttpRequest.send(null);

// 只有当 responseText == "true" 的时候才会返回 true
return res;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式