Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / AJAX и синхронизация / 11 сообщений из 11, страница 1 из 1
05.11.2008, 19:07
    #35635948
YuriyB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
Добрый день!


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
function test()
{
check_captcha_ajax();
// здесь нужно ждать окончания  check_captcha_ajax()
alert('слишком рано!')

}

function reportSuccess(request) {
  	 alert ('я должен быть первый');
}

function check_captcha_ajax(){
       var url    = 'ajax/checkc.php';
       var params = 'k=' + $F('k');
       var ajax   = new Ajax.Request(url, 
                                       {method: 'post',
                                        parameters: params,
                                        onSuccess:reportSuccess,
                                        onFailure: reportError}
                                     );
 }



как мне организовать функцию
что бы дельнейшее ёе выполнение было только после заверщения
ajax
...
Рейтинг: 0 / 0
05.11.2008, 20:04
    #35636061
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
Объекта Ajax.Request в javascript. Значит, ты или юзаешь внешний фреймворк или есть функция, создающая этот объект (Ajax). Поэтому надо либо показать нам свой код, либо хотя бы сказать, с применение чего сделан данный асинхронный вызов.

А во-вторых, разве функция reportSuccess не выполняется после выполнения запроса? Чего, в общем-то, надо?
...
Рейтинг: 0 / 0
05.11.2008, 20:45
    #35636107
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
Ага. Наверняка, есть какой-то параметр, который говорит синхронно, или асинхронно. Может лучше голый XmlHttpRequest заюзать? Там такое - точно есть.
...
Рейтинг: 0 / 0
06.11.2008, 19:14
    #35638600
YuriyB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
IDVsbruckОбъекта Ajax.Request в javascript. Значит, ты или юзаешь внешний фреймворк или есть функция, создающая этот объект (Ajax). Поэтому надо либо показать нам свой код, либо хотя бы сказать, с применение чего сделан данный асинхронный вызов.

А во-вторых, разве функция reportSuccess не выполняется после выполнения запроса? Чего, в общем-то, надо?


я юзаю prototype

reportSuccess выполняется но

alert('слишком рано!') появляется раньще

чем alert ('я должен быть первый');
...
Рейтинг: 0 / 0
06.11.2008, 19:59
    #35638677
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
Естественно! А ты как хотел??? Javascript однопотоковый. Кстати, в этом и состоит прелесть А синхронной передачи/запросов.
...
Рейтинг: 0 / 0
06.11.2008, 20:07
    #35638695
mrJust
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
YuriyB alert('слишком рано!') появляется раньще
Еще бы)

А происходит это из-за того, что Ваша функция "check_captcha_ajax()" делает асинхронный запрос на сервер (ключевое слово асинхронный). Функция check_captcha_ajax() завершается и передает управление назад в test(), там выполняется alert('слишком рано!').
Когда с сервера приходит ответ, вызывается reportSuccess().
YuriyBкак мне организовать функцию
что бы дельнейшее ёе выполнение было только после заверщения
ajax
Поместите то, что нужно выполнять в reportSuccess(){} - это правильный вариант. Или выполняйте синхронные запросы вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
new Ajax.Request(url, 
                                       {method: 'post',
                                        asynchronous: true,
                                        parameters: params,
                                        onSuccess:reportSuccess,
                                        onFailure: reportError}
                                     );
...
Рейтинг: 0 / 0
07.11.2008, 11:33
    #35639542
mrJust
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
Упс, опечатался, для синхронных запросов должно быть так (судя по мануалу)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
new Ajax.Request(url, 
                                       {method: 'post',
                                        asynchronous: false,
                                        parameters: params,
                                        onSuccess:reportSuccess,
                                        onFailure: reportError}
                                     );
...
Рейтинг: 0 / 0
08.11.2008, 14:32
    #35641712
YuriyB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
mrJustYuriyB alert('слишком рано!') появляется раньще
Еще бы)

А происходит это из-за того, что Ваша функция "check_captcha_ajax()" делает асинхронный запрос на сервер (ключевое слово асинхронный). Функция check_captcha_ajax() завершается и передает управление назад в test(), там выполняется alert('слишком рано!').
Когда с сервера приходит ответ, вызывается reportSuccess().
YuriyBкак мне организовать функцию
что бы дельнейшее ёе выполнение было только после заверщения
ajax
Поместите то, что нужно выполнять в reportSuccess(){} - это правильный вариант. Или выполняйте синхронные запросы вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
new Ajax.Request(url, 
                                       {method: 'post',
                                        asynchronous: true,
                                        parameters: params,
                                        onSuccess:reportSuccess,
                                        onFailure: reportError}
                                     );


спасибо , я так и сделал с reportSuccess().
надо будет как нибудь и с asynchronous: false попробовать ;-)
...
Рейтинг: 0 / 0
08.11.2008, 16:51
    #35641817
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
Не надо ... на время передачи-получения такого запроса браузер просто подвисает.
...
Рейтинг: 0 / 0
09.11.2008, 11:27
    #35642237
Frenzy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
если б внимательно читали документацию, то знали бы что есть колбэк onComplete - он выполняется после всех onSuccess/onFailure

_______________________________________
2pro4U
...
Рейтинг: 0 / 0
09.11.2008, 11:28
    #35642239
Frenzy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AJAX и синхронизация
использовать XHR в синхронном режиме является плохим стилем и плохо отражается на юзабилити

_______________________________________
2pro4U
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / AJAX и синхронизация / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]