Javascript 在回调函数中使用外部变量的jQuery

Javascript 在回调函数中使用外部变量的jQuery,javascript,jquery,ajax,Javascript,Jquery,Ajax,好的,这就是我所知道的: function validate() { var validated = true; $('.alert-infobox').fadeIn("fast", function(){ $('input.offer').each(function(){ // do ajax code with async = false for each input for validate if something happens validate =

好的,这就是我所知道的:

function validate() {
var validated = true;

$('.alert-infobox').fadeIn("fast", function(){
   $('input.offer').each(function(){
       // do ajax code with async = false for each input for validate if something happens
       validate = false;
   });
});

}

if(validated){
   //do something
}

return validated;
现在我要做的是淡入淡入,在淡入运行后,为每个输入调用一个ajax来验证服务器端的输入,现在验证的变量始终保持为真,我相信fadeIn中回调内的指令在不同的范围内,有没有办法访问回调函数外的变量

抱歉,这里有点新:)


谢谢

验证
功能中,它不是一个不同的范围。回调将在if语句之后运行

请尝试以下调试代码:

function validate() {
    var validated = true;
    console.log("Before fadeIn");
    $('.alert-infobox').fadeIn("fast", function(){
       console.log("Callback!");
       $('input.offer').each(function(){
           // do ajax code with async = false for each input for validate if something happens
           validated = false;
       });
    });
    console.log("After fadeIn");
}

validate();
您将按以下顺序获得输出:

fadeIn之前的

fadeIn之后的

回调


为什么??因为回调是在动画完成后调用的,大约是在200+毫秒之后。范围不是问题所在,而是fadeIn是异步的,在修改validate之前返回。我看到那里有打字错误
validate**d**
,尽管范围是问题所在,而且他试图在函数外部调用
validated
。我不知道如何帮助您,因为我不确定您到底需要这个
已验证的
变量做什么。如果不异步执行,使用ajax的目的是什么?在回调中执行逻辑。另外,您不会使用ajax逐个验证输入(发出许多请求…),而是在前端进行验证,然后向服务器发出一个ajax请求。“尝试一些调试代码”是一个非常通用和基本的注释,但是这么多PHP和Javascript用户不这样做?基本编程技术,各位。Ok;)但是如何等待回调运行,以便在淡入前使用它呢?