2011-10-09 138 views
1

我有一个函数来验证代码与AJAX(PHP)。但是,当我尝试运行它时,它将返回undefined,当它返回truefalse时。ajax函数返回undefined

功能:

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

data或者是valid = 1;valid = 0;

回答

2

您可以在回调返回值不返回由于AJAX请求是异步的,。

执行回调本身内部调用verifyViite的任何代码,而不是返回true或false。您可以有synchronous AJAX request

+0

对不起,如果我理解错误,但你是否说我不能通过函数做这个验证? –

+0

你可以通过一个函数来做这个验证,但你需要提供一个回调函数(就像我在其他帖子中发布的那样)。 – japrescott

+0

你不能像你现在所做的那样做 - 你必须改变你的逻辑。发布更多的代码,我们可能会给你更好的逻辑。 –

2

由于函数veryViite不返回任何内容,因此undefined是预期结果。由于它的asynchronouse,你将不得不给一个回调函数,这将成功调用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); 
}); 
+0

好吧,'cb'是一个函数吗? –

+0

你能向我解释这个“回调”吗? –

+0

是的。正如你所看到的,我正在调用verifyViite,我提供了一个函数,当ajax返回时会被调用。所以,提供的函数是verifyViite中的变量cb。如果该函数计算错误并将文档标记为“不可加载”,则该函数将更有意义。在通话结束后,您可以弄清楚如何处理错误的电话。 顺便说一句 - >使用Eval是“坏”的做法! JQuery将完成所有“eval”需求来访问信息。 – japrescott