更改了ajax请求之外不可用的变量值 - jQuery

时间:2013-12-27 09:15:16

标签: javascript jquery ajax

我在具有相同名称的表单中有多个字段,我将这些值传递给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区块外,它不可用。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您的flag变量是在click事件处理程序内声明的局部变量。并且它不会在事件处理程序外部可见。所以你应该简单地在事件处理程序之外声明它。如果你想在click事件本身内部使用它,你可以创建ajax查询async:false或创建函数,并在完成ajax调用后调用它。

答案 1 :(得分:1)

编辑:

由于Ajax请求是异步,因此alert("stage2 = "+flag); 在您的ajax调用之后立即调用,而不等待响应。这就是flag=0

的原因