Переменная, измененная в запросе ajax, не видна после выполнения - PullRequest
0 голосов
/ 11 февраля 2011

Моя переменная глобальная, но она не отображает тот же результат:

function checkLiveRdv(salle, jour, dateus, heure)
{
var resu;
   var urlaction = myUrl;

   $.ajax({
      type: "POST",
      dataType: "json",
      url: urlaction,
      data: myDatas,
      success: function(message)
      {

         data = $.parseJSON(message);
         if(data['nb']==1)
            resu = "ok";
         else resu = "pasok";
         //this alert display the good result
         alert (resu);

      }
   });
   //this alert display 'undefined', why ???
   alert(resu);
}

Я не знаю, почему resu не хранит данные: /

Ответы [ 3 ]

2 голосов
/ 11 февраля 2011

Во-первых, ваша переменная resu не является глобальной.Он является локальным внутри области действия функции checkLiveRdv.Глобальные переменные в javascript объявляются без ключевого слова var.Однако не рекомендуется использовать глобальные переменные.

В первом появившемся предупреждении отображается неопределенное значение resu.Асинхронный $.ajax заканчивается позже, и когда он заполняет значение resu, он отображается правильно.

Я бы оставил вызов ajax асинхронным, как сейчас.И работать с resu только внутри обратного вызова ajax, так как он получает свое значение внутри него.

1 голос
/ 11 февраля 2011

То есть вы не ожидаете завершения вызова $.ajax().

Если вам нужны синхронные запросы, установите для параметра синхронизации значение false:

$.ajax({
    type: "POST",
    async: false,
    ...
0 голосов
/ 11 февраля 2011

Это потому, что $.ajax() в этом случае является асинхронным. Изменить $.ajax(), чтобы включить async: false:

   $.ajax( {
      type    : 'POST',
      dataType: 'json',
      url     : urlaction,
      data    : myDatas,
      async   : false,
      success : function(message) {
         data = $.parseJSON(message);
         if(data['nb']==1)
            resu = "ok";
         else resu = "pasok";
            alert (resu);
      }
   } );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...