我在具有相同名称的表单中有多个字段,我将这些值传递给ajax as;
$('#mybutton').click(function(){
var flag = 0;
$('input[name="myfield"]').each(function(){
var current = $(this);
var item = $.trim(current.val());
if(item != ""){
$.ajax({
type: 'POST',
url: 'ajaxhandler.php',
data: 'myitem='+item,
cache: false,
success: function(result) {
if(result == "true"){
flag++;
}
alert("stage1 = "+flag);//returns flag (1,2,3 etc)
}
});
}
});
alert("stage2 = "+flag);//returns 0. But I need same value as on the flag above
});
该标志设置为计算有效项目的数量,并被收集以供进一步使用。但在ajax区块外,它不可用。我该如何解决这个问题?
答案 0 :(得分:2)
您的flag
变量是在click事件处理程序内声明的局部变量。并且它不会在事件处理程序外部可见。所以你应该简单地在事件处理程序之外声明它。如果你想在click事件本身内部使用它,你可以创建ajax查询async:false
或创建函数,并在完成ajax调用后调用它。
答案 1 :(得分:1)
编辑:
由于Ajax请求是异步,因此alert("stage2 = "+flag);
在您的ajax调用之后立即调用,而不等待响应。这就是flag=0