Prototype 1.5_rc1

Solid

Drosera anglica
Прерывание исполнения функции в each (Prototype 1.5_rc1)

Почему после итерации data.each прерывается выполнение функции onSuccess? По идее должно выводить PRINT в FireBug, однако ничего подобного не происходит. Если удалить строку 1, тогда логгер срабатывает. Пытался менять v на временную переменную, тоже самое.
Код:
                new Ajax.Request(url,
		{
			method: 'get',
			onSuccess: function(t) {
				data = t.responseText.split("\n");
				data.each(function(v) {
					v = v.split("\t");
					v[1] = v[1].split(","); //1
				});
				console.log('PRINT');
			}
		});
-~{}~ 22.10.06 04:04:

Неужели никто не сталкивался с пободной проблемой?
 

faithless.man

Новичок
думаю нужно делать так:
вместо onSuccess используй onComplete, тогда будет всё правильно.
onSuccess подрузумевает под собой то, что запрос прощёл успешно, а onComplete - запрос прошёл успешно и передача данных завершена.

а так данные ещё не все получены и возможно переменной v[1] нет и из-за этого продолжение дальше функции не возможно

вроде так если я не ошибаюсь
 

Solid

Drosera anglica
Проблема совсем не в функциях option onComplete или onSuccess. Проблема в том, что выполнение этих функций останавливается сразу же после того, как итерация each завершается.
 

faithless.man

Новичок
а объект console присутствует в видимости onSuccess функции,
т.е. видин ли объект console в функции?

тогда возможно это баг в Prototype 1.5_rc1

если возможно привидите весь код вашего скрипта
 

Solid

Drosera anglica
faithless.man
Дык функция alert то должна быть видна, правда? Но она всёравно не срабатывает. Проблема в чём-то другом.
 

faithless.man

Новичок
ты говоришь, что если удалить эту строку:
v[1] = v[1].split(","); //1
то всё работает, так?

думаю загвоздка в этой строчке v = v.split("\t");
т.е. получается массив из одного элемента v[0]
а v[1] === undefined

-~{}~ 23.10.06 09:40:

попробуй так:

Код:
new Ajax.Request(url,
		{
			method: 'get',
			onSuccess: function(t) {
				data = t.responseText.split("\n");
				data.each(function(v) {
                                        try {
					   v = v.split("\t");
       					   v[1] = v[1].split(","); //1
                                        } catch (e) {
                                            alert (e.toString());
                                        }
				});
				console.log('PRINT');
			}
		})
 

Solid

Drosera anglica
faithless.man
И как же это я сразу не заметил!? Большое спасибо.
 
Сверху