2012-02-21 2 views
0

Это использование jQuery ajax и получение данных из файла php.Я не вижу значение после процедуры ajax

Я могу видеть данные, которые я хочу получить в первом и втором оповещениях, однако я не знаю, почему я не вижу никакого значения из третьего предупреждения.

function getMarkerContent(marker)  { 
      // Fetch data from database   
      var ret = "<ul>"; 
     var temp = ""; 
     var process = ""; 

     $.get("../status.php", function (returnValue) { 
      var json = eval("(" + returnValue + ")"); 
      $.each(json, function (key, state) { 
       obj = state; 
       ret += "<li>" + obj.member_id + ": " + obj.content + "</li>"; 
       temp += obj.member_id + ": " + obj.content + "\n"; 

      }); 
      process = processfunction(temp); 
      alert(temp); // first alert 
      ret += "</ul>"; 
     }); 

     alert(process); // third alert 
    } 
    function processfunction(data) { 

     alert(data); 
     return data; // second alert 
    } 

ответ

2

Поздравляем! Вы только что узнали, почему существуют обратные вызовы.

http://api.jquery.com/jQuery.get/

Ваш первый и второй сигнал тревоги срабатывает в функции обратного вызова .getsuccess, и, таким образом, вызываются только после того, как метод AJAX возвращает результат.

Ваше третье предупреждение происходит за пределами обратного вызова, поэтому он запускается до того, как метод AJAX возвращает любые данные.

+0

lol Я думал, что ваш ответ был первым спамом. :) – Kristian

+0

Спасибо, что ответили. Итак, поскольку третье предупреждение происходит за пределами обратного вызова, нет способа использовать данные? Я хочу, чтобы он вернулся к другой функции. – Q123

+0

Гарантируется, что только код внутри обратного вызова «success» будет работать * после того, как будут получены данные AJAX. Это означает, что «асинхронный» означает: запускается AJAX, а остальная часть кода продолжает работать, пока вы его ожидаете, за исключением обратного вызова. – Blazemonger

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