Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2012, 13:15
Новичок на форуме
Отправить личное сообщение для laandrew Посмотреть профиль Найти все сообщения от laandrew
 
Регистрация: 13.12.2012
Сообщений: 2

Вернуть данные из ajax функции
Здравствуйте!
Прошу помощи в следующем вопросе.

Есть код:
function ajax_build(id, callback) {
var http = createObject();
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
var response = http.responseText;
if(response != '') {
callback(response);
}
}
}
http.open('GET', '/scripts/ajax_build.php?id='+id+'&nocache='+nocache);
http.send(null);
}


var result=ajax_build(1, function(data){
return data;
});

document.getElementById('div').innerHTML = result;

В результате выдается: "undefined".

Прошу помощи в решении данной проблемы.
Ответить с цитированием
  #2 (permalink)  
Старый 13.12.2012, 14:14
Аспирант
Посмотреть профиль Найти все сообщения от adik7960
 
Регистрация: 11.03.2012
Сообщений: 58

var ajax_text;
function ajax_build(id, callback) {
 var http = createObject();
 http.open('GET', '/scripts/ajax_build.php?id='+id+'&nocache='+nocache); 
 http.onreadystatechange = function() {
  if(http.readyState == 4 && http.status == 200) {
    var response = http.responseText;
     if(response != '') {text=response;} 
  } 
} 
http.send(''); 
}

document.getElementById('div').innerHTML = text;
Ответить с цитированием
  #3 (permalink)  
Старый 13.12.2012, 14:21
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

laandrew,

Все действия необходимо выполнять в callback (т.к. операция асинхронная, то данные с сервера будут доступны только в этот момент)
var result=ajax_build(1, function(data){
document.getElementById('div').innerHTML = data;
return data;
});

И кроме того, функция ajax_build у вас ничего не возвращает, поэтому result всегда будет undefined.

Последний раз редактировалось Hoshinokoe, 13.12.2012 в 14:25.
Ответить с цитированием
  #4 (permalink)  
Старый 13.12.2012, 21:53
Новичок на форуме
Отправить личное сообщение для laandrew Посмотреть профиль Найти все сообщения от laandrew
 
Регистрация: 13.12.2012
Сообщений: 2

Подскажите, как мне сделать, чтобы функция ajax_build возвращала значение.

Ели допустим я захочу вместо document.getElementById('div').innerHTML присвоить какой-либо переменной значение функции ajax_build и использовать в дальнейшем это значение в различных целях.
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2012, 20:13
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

Сообщение от laandrew Посмотреть сообщение
Подскажите, как мне сделать, чтобы функция ajax_build возвращала значение.
Никак. Почитай про асинхронные события.
Ответить с цитированием
  #6 (permalink)  
Старый 15.12.2012, 16:44
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от Hoshinokoe
т.к. операция асинхронная
xhr.open('GET', url, false);
теперь синхронная.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверить данные в функции, которая работает с другой функцией. Andrej_2 Общие вопросы Javascript 5 27.09.2012 22:42
Получение ответа от функции в которой выполняется ajax Kelly Общие вопросы Javascript 7 10.09.2012 16:23
ajax $.post вместо json проблема данные не приходят Sadist_dead AJAX и COMET 2 12.07.2012 17:59
JQuery. Ajax. Глобальные функции Harvey jQuery 5 31.08.2011 16:54
return функции с ajax запросом !? namo86 AJAX и COMET 2 19.01.2011 19:30