Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.11.2009, 11:58
Аспирант
Отправить личное сообщение для mikel Посмотреть профиль Найти все сообщения от mikel
 
Регистрация: 22.11.2009
Сообщений: 30

Вынести ответ ajax за пределы callback функции
Вот разбираюсь с ajax. Хочется произвести ajax-запрос, а результат его выполнения запихнуть в переменную и дальше с ней манипулировать. Но все примеры, которые мне удалось нагуглить, позволяют работать с ответом ajax либо в callback функции, либо cразу загрузить ответ в какой-нибудь html элемент. Пытался сделать как в коде ниже, но t.responseText возращается пустым, а t.status = 1. Видимо, запрос еще не успевает завершиться, когда я пытаюсь прочесть его ответ.
Заранее спасибо за помощь.

get.php
echo "Привет!";


js-код
...........................
				var t;			
				t =  $.post("get.php",
						   { name: "John", time: "2pm" },
						   function(data)
							     {						    					    
							    return data;
							    },
							    "text"
						    );

                             alert(t.responseText);
................................

Последний раз редактировалось mikel, 22.11.2009 в 12:00.
Ответить с цитированием
  #2 (permalink)  
Старый 22.11.2009, 14:21
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Callback-функция не просто так передается 3-м параметром в метод post.
Ответить с цитированием
  #3 (permalink)  
Старый 22.11.2009, 14:30
Аспирант
Отправить личное сообщение для mikel Посмотреть профиль Найти все сообщения от mikel
 
Регистрация: 22.11.2009
Сообщений: 30

То есть сделать что-нибудь с ответом за пределами callback функции нельзя?
Ответить с цитированием
  #4 (permalink)  
Старый 22.11.2009, 14:55
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

В случае с асинхронным запросом нельзя, остальной код не будет ждать, когда придет ответ с сервера, продолжит выполнятся, а когда ответ все таки придет, будет вызвана callback-функция.
Ответить с цитированием
  #5 (permalink)  
Старый 23.11.2009, 22:56
Аспирант
Отправить личное сообщение для mikel Посмотреть профиль Найти все сообщения от mikel
 
Регистрация: 22.11.2009
Сообщений: 30

Вынес ajax запрос в самый конец функции, но тут возникает другой вопрос: можно ли сделать так, чтобы return для callback функции стал бы и return для обрамляющей его функции myfunction.Или можно все-таки поставить какой-нибудь таймаут, чтобы произвести нужные действия после завершения запроса за пределами Callback функции.

function myfunction 
      {
      $.post("get.php",
                           { name: "John", time: "2pm" },
                           function(data)
                                {                                                    
                                ..............................
                                ..............................
                                      if (iserror)
                                         {
                                         return false;
                                         }
                                         else
                                         {
                                         return true;
                                         }
                                },
                                "text"
                            );
      }

Последний раз редактировалось mikel, 23.11.2009 в 23:00.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax - JSON - не распознает пришедший ответ Майский Кот jQuery 1 14.05.2009 00:40