powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подгрузка js файла и Ajax
9 сообщений из 9, страница 1 из 1
Подгрузка js файла и Ajax
    #34635329
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С помощью Ajax в контейнер DIV загружается xHTML код.
Перед тем, как отправить Ajax запрос на сервер я загружаю в head страницы js файл следующим отбразом:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
function change_src(link){
    var old_s = document.getElementById('dataloader');
    if (old_s){old_s.parentNode.removeChild(old_s);}
    var s = document.createElement('script');
    s.setAttribute('type', 'text/javascript');
	s.src = link;
	s.id = 'dataloader';
	document.getElementsByTagName('head')[ 0 ].appendChild(s);
}
где link - это урл погружаемого js файла.

Этот погружаемый js файл содержит функцию doStart().
Когда Ajax запрос возвращается клиенту я вставляю полученный HTML код в контейнер DIV и вызываю функцию doStart().
Код: plaintext
1.
InnerDiv.innerHTML = req.responseText;
doStart();

Все целиком выглядит вот так(использую библиотеку Д. Котерова):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
function doLoad(param) {
	var content = document.getElementById('content');
	content.innerHTML = 'Загрузка';
	change_src('administrator.js');
	var req = new JsHttpRequest();
	req.onreadystatechange = function() {
		if (req.readyState ==  4 ) {
			content.innerHTML = req.responseText;
			doStart(param);
		}
	}
	req.open(null, 'administrator.php', true);
	req.send();
}

В большинстве случаев все работает нормально, но в некоторых ничего кроме "Загрузка" не отображается...
Возможно функция doStart() не вызывается или вызывается до того как контейнер DIV наполнится необходимым JS.
Подскажите пожалуйста в чем может быть причина.
Спасибо.
...
Рейтинг: 0 / 0
Подгрузка js файла и Ajax
    #34635340
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опечатка:
до того как контейнер DIV наполнится необходимым HTML
...
Рейтинг: 0 / 0
Подгрузка js файла и Ajax
    #34636004
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На req полезно весить ещё и onerror. А то ошибки просто съедаются, как сейчас.
readyState в этих случаях достигает 4?
...
Рейтинг: 0 / 0
Подгрузка js файла и Ajax
    #34636945
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERНа req полезно весить ещё и onerror. А то ошибки просто съедаются, как сейчас.

Спасибо, надо будет почитать как это делается.
LINUXER
readyState в этих случаях достигает 4?

К сожалнию сам я не могу промоделировать ситуацию - так бы я втавил alert
Код: plaintext
1.
2.
3.
4.
5.
6.
req.onreadystatechange = function() {
	if (req.readyState ==  4 ) {
		content.innerHTML = req.responseText;
		alert('OK');
		doStart(param);
	}
}
и могбы понять достигает 4 или нет. Вы думаете, что ошибка содержится в JS файле, который я подгружаю в HEAD?

Почему-то кажется что дело в том, что погружаемый JS файл не подгружается до конца и функции doStart(); нечего вызывать. Как можно проверить полностью ли загрузился JS файл?
(В одном из случаев у человека даже и CSS файл прописанный прямо в HTML не подгружался)
...
Рейтинг: 0 / 0
Подгрузка js файла и Ajax
    #34637173
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBBВ большинстве случаев все работает нормально, но в некоторых ничего кроме "Загрузка" не отображается...
раз так, то
content.innerHTML = req.responseText;
уже не выполняется (я так понимаю в ответе не может быть "Загрузка")
Alex_BBB
Как можно проверить полностью ли загрузился JS файл?


для оперы и ИЕ можно смотреть s.readyState (его значения, кажется разные для браузеров)
для оперы и ФФ можно назначить s.onload
для ИЕ можно назначить s.onreadystatechange

Можно замутить что-нибудь с typeof(doStart)
т е если он вернёт "undefined", то функция ещё не загрузилась
...
Рейтинг: 0 / 0
Подгрузка js файла и Ajax
    #34637348
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXER Alex_BBBВ большинстве случаев все работает нормально, но в некоторых ничего кроме "Загрузка" не отображается...
раз так, то
content.innerHTML = req.responseText;
уже не выполняется (я так понимаю в ответе не может быть "Загрузка")

Да, точно... А в чем может быть причина? Ни у кого такого не было?

А как "на req весить ещё и onerror":
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
req.onreadystatechange = function() {
	if (req.readyState ==  4 ) {
		content.innerHTML = req.responseText;
		doStart(param);
	}
}
req.onerror = function() {
...//как вывести ошибки??
}
Вот так?
...
Рейтинг: 0 / 0
Подгрузка js файла и Ajax
    #34637603
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте Prototype 1.5
...
Рейтинг: 0 / 0
Подгрузка js файла и Ajax
    #34637751
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин.Используйте Prototype 1.5
Спасибо за совет, а есть где-нибудь хорошое описание для начинающих на русском?
...
Рейтинг: 0 / 0
Подгрузка js файла и Ajax
    #34637770
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBBВот так?
В JsHttpRequest - незнаю.
В XMLHttpRequest onerror делал только для фокса
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Подгрузка js файла и Ajax
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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