Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ext.ajax.query 
:(
    Опции темы
asagi
  Дата 8.7.2011, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Asagi Shinsou



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



Здравствуйте, форумчане!
Вот начал изучать недавно замечательный фреймворк EXTJS. Столкнулся с простецкой проблемой...

Есть функция, из которой делается ajax запрос в скрипт. Мне нужно, что бы эта функция возвращала ответ, однако я столкнулся с некоторыми сложностями. Привожу код функции:

Код:

Код

function ex_ajax_form(form){
var txt;
Ext.Ajax.request({  
   url: 'forms.php',
   params: {'form':form},
   success: function(response){
var resp = response.responseText;
txt=resp;
    }
        });
        alert(txt);
        return txt;
}




Alert показывает undefined. Подскажите, где я мог ошибиться? Область видимости переменной или что??  smile 
PM MAIL WWW ICQ Skype   Вверх
нуп
Дата 8.7.2011, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Скорей всего запрос асинхронный, для него надо alert писать в функции success
PM MAIL   Вверх
asagi
Дата 8.7.2011, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Asagi Shinsou



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



нуп, alert всего лишь как средство диагностики. Функция должна возвращать ответ от скрипта forms.php. Но в ответе пустота, хотя php скрипт отдает данные нормально  smile 
PM MAIL WWW ICQ Skype   Вверх
нуп
Дата 8.7.2011, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Ваш ответ придет в функцию success! Перед ответом выполнится функция ex_ajax_form и вернет пустоту.
PM MAIL   Вверх
asagi
Дата 8.7.2011, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Asagi Shinsou



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



нуп,я чет под ночь торможуsmile)) smile 
А что нужно сделать, что бы функция не возвращала пустоту? Как мне из succes передать ответ в ex_ajax_form? Можете привести фрагмент кода?
PM MAIL WWW ICQ Skype   Вверх
нуп
Дата 8.7.2011, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Сделать запрос с ожиданием ответа. async: false .  Если вам это подойдет.
PM MAIL   Вверх
asagi
Дата 9.7.2011, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Asagi Shinsou



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



нуп, спасибо,  а для асинхронного запроса есть решение?
PM MAIL WWW ICQ Skype   Вверх
нуп
Дата 9.7.2011, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Да, надо в success функцию(или вместо нее) передавать вашу функцию, которую надо будет вызвать
Код

function callback_func(data) {
         alert(data);
}

function ex_ajax_form(form, callback_func){
var txt;
Ext.Ajax.request({  
   url: 'forms.php',
   params: {'form':form},
   success: function(response){
             var resp = response.responseText;
            txt=resp;
             callback_func(resp);
    }
        });
}

PM MAIL   Вверх
asagi
Дата 9.7.2011, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Asagi Shinsou



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



Нуп, спасибо! Ща будем пробовать....smile
PM MAIL WWW ICQ Skype   Вверх
asagi
Дата 10.7.2011, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Asagi Shinsou



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



Нуп, скопировал твой код к себе..не работает :( Firebug говорит, что callback_func, не есть функция :(

Добавлено через 4 минуты и 8 секунд
Изменил тип запроса на синхронный, но все равно, проблема та же...%) smile 
PM MAIL WWW ICQ Skype   Вверх
нуп
Дата 10.7.2011, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Переименуйте на function ex_ajax_form(form, callback) ну и вызов сам тоже
PM MAIL   Вверх
asagi
Дата 11.7.2011, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Asagi Shinsou



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



Нуп, все равно не работает...Но вот что я заметил. Если функция такая:

Код

function ex_ajax_form(form){
var txt;
Ext.Ajax.request({  
   url: 'forms.php',
   params: {'form':form},
   success: function(response){
 resp = response.responseText;
txt=resp;
    }
        });
        alert(txt);
        return txt;
}



То alert показывает undefined, но при этом функция работает. Возвращает то, что ей выдает скрипт forms.php.


 А если код функции такой:

Код

function ex_ajax_form(form){
var txt;
Ext.Ajax.request({  
   url: 'forms.php',
   params: {'form':form},
   success: function(response){
 resp = response.responseText;
txt=resp;
    }
        });
        return txt;
}


То функция перестает работать. Как это понимать? Почему с alert работает, а без уже нет?? smile 
PM MAIL WWW ICQ Skype   Вверх
нуп
Дата 11.7.2011, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Отдает ли сервер вообще что-то?

Добавлено через 17 секунд
Что вы посылаете, и что приходит?
PM MAIL   Вверх
asagi
Дата 11.7.2011, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Asagi Shinsou



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.7.2011

Репутация: нет
Всего: нет



нуп, сам php скрипт forms.php работает адекватно. В него передается:form=edit_profile_p1, а в ответ приходит форма редактирования профиля. Если делать вручную (тупо передать в forms эту переменную) все работает. Проблема именно в JS и я не пойму в чем именно. Вызов делаю так:

Код

.....
 createWindow : function(){
        var desktop = this.app.getDesktop();
        var win = desktop.getWindow('grid-win');
        if(!win){
       var msg=ex_ajax_form('edit_profile_p1');
            win = desktop.createWindow({
                id: 'grid-win',
                title:'Настройка профиля',
                width:740,
                height:480,
        html:msg,
......


 И собственно функция, в её изначальном варианте:
Код

function ex_ajax_form(form){
var txt;
Ext.Ajax.request({  
   url: 'forms.php',
   params: {'form':form},
   success: function(response){
 resp = response.responseText;
txt=resp;
    }
        });
        alert(txt);
        return txt;
}


В итоге alert говорит undefined, а вот в окно загружается нужная форма. Но стоит убрать alert как ничего не грузится.
PM MAIL WWW ICQ Skype   Вверх
нуп
Дата 11.7.2011, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: 8
Всего: 33



Для вашего случая, надо ставить async : false. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.