2013-07-03 4 views
1

Вот пример моего кода, я удалил ненужные части. Я установил глобальную переменную recipient. Он должен быть предупрежден 1, но ничего не предупреждается. Каков правильный способ изменить переменную, установленную вне функции? Как я могу это решить?Функция изменения переменной jquery не работает

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"); 
    } 
}) 
+0

возможно дубликат [Как вернуть ответ от вызова AJAX?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax- call) –

ответ

4

Это связано с вызовом asyn, положил условие в функцию обратного вызова вместо того, чтобы положить, если после него. Вызов вызова вызывается после завершения выполнения функции клика.

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"); 
     } 
    }); 
}); 
1

Вы проверяете, есть ли получатель 1 до того, как запрос JSON будет завершен. Добавьте его в функцию обратного вызова.

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"); 
     } 
    }); 
}); 
+0

есть ли способ убедиться, что запрос JSON завершен, поэтому мне не нужно иметь его в функции обратного вызова? – user892134

Смежные вопросы