Javascript 返回未定义的ajax函数

Javascript 返回未定义的ajax函数,javascript,jquery,ajax,callback,Javascript,Jquery,Ajax,Callback,我有一个用AJAX(PHP)验证代码的函数。但是,当我尝试运行它时,它返回undefined,而它应该返回true或false 功能: function verifyViite(viite) { $.get('dataminer.php?question=validateViite&q='+viite, function(data) { jQuery.globalEval(data); if(valid == 1) { re

我有一个用AJAX(PHP)验证代码的函数。但是,当我尝试运行它时,它返回
undefined
,而它应该返回
true
false

功能:

function verifyViite(viite) {
    $.get('dataminer.php?question=validateViite&q='+viite, function(data) {
        jQuery.globalEval(data);
        if(valid == 1) {
            return true;
        }
        else {
            return false;
        }
    });
}

数据
有效=1
有效=0

由于AJAX请求是异步的,因此无法返回回调返回值

执行回调本身内部调用的任何代码,而不是返回true或false


或者,您也可以使用。

由于函数veryViite不返回任何内容,因此预期结果为undefined。由于它是异步的,所以您必须给出一个回调函数,该函数将在成功的ajax调用时被调用。像这样的东西

function verifyViite(viite,cb) {
    $.get('dataminer.php?question=validateViite&q='+viite, function(data) {
        jQuery.globalEval(data);
        if(valid == 1) {
            cb(true);
        }
        else {
            cb(false);
        }
    });
}
这个电话是这样的

verifyViite(viite,function(good){
    alert(good);
});

如果我理解错了,我很抱歉,但是你是说我不能通过函数进行验证吗?你可以通过函数进行验证,但是你需要提供回调(就像我在另一篇文章中发布的那样…)你不能用你现在尝试的方式来做-你必须改变你的逻辑。发布更多的代码,我们可能会给你更好的逻辑;为什么要执行异步请求?同步请求意味着浏览器正在等待请求完成。。如果服务器加载它需要很长时间,则会导致整个页面“挂起”直到完成—这对用户来说不是很好的体验。通过使其异步,页面将像往常一样加载,当数据准备就绪时,您可以更新页面中的适当部分。好的,那么
cb
是一个函数吗?您能向我解释一下“回调”的事情吗?是的。从我调用VerifyVite的过程中可以看出,我提供了一个函数,当ajax返回时将调用该函数。因此,提供的函数是verifyViite中的变量cb。如果该函数将计算错误并可能将文档标记为“不可加载”,则该函数将更有意义。在通话结束时,您可以了解如何处理错误通话。。顺便说一句->使用Eval是“糟糕”的做法!JQuery将执行访问信息所需的所有“eval”操作。好的,回调->通常,当您调用异步函数(一个不能提供直接结果的函数,因为它在后台执行某些操作,您需要等待)时,您会跳出代码执行某些操作的逻辑。如果我们为asynchronouse函数提供一个函数,我们可以确保在asnychronous函数返回时调用该函数。因此,它被称为“回调函数”。帮助?哦,这样服务器响应后将调用
function(good)