1

这是我的代码示例,我删除了不必要的部分。我设置了一个全局变量recipient。它应该保持警惕1,但没有任何警报。更改函数外部变量集的正确方法是什么?我该如何解决这个问题?

var recipient = 0;

$("#submit-button").click(function () {

    $.getJSON("/fetch.php?o=4&user=" + k, function (B) {
        $.each(B, function (index, result) {
            recipient = 1;

        })

    })

    if (recipient == 1) {
        alert("yes");
    }
})
4

2 回答 2

4

这是由于异步调用,将条件放在回调函数中,而不是放在 if 之后。在 click 函数完成执行后调用回调。

var recipient = 0;      


$("#submit-button").click(function() {

  $.getJSON("/fetch.php?o=4&user=" + k, function(B) {
       $.each(B, function(index, result) {
            recipient = 1;    
       });
      if(recipient==1) {
         alert("yes");
      }
   });
});
于 2013-07-03T18:15:35.370 回答
1

在 JSON 请求完成之前,您正在检查收件人是否为 1。将其添加到回调函数中。

var recipient = 0;

$("#submit-button").click(function () {
    $.getJSON("/fetch.php?o=4&user=" + k, function (B) {
        $.each(B, function (index, result) {
            recipient = 1;
        });

        if (recipient == 1) {
            alert("yes");
        }
    });
});
于 2013-07-03T18:15:51.640 回答