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;)但是如何等待回调运行,以便在淡入前使用它呢?