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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Upload данных. без перезагрузки основной страницы 
:(
    Опции темы
diam
Дата 26.3.2005, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго всем времени года!

Как-то я создавал тему о подгрузке данных без перезагрузки страницы. Я остановился на использовании метода appendChild, который добавляет в конец тела документа скрипт. Вот как выглядит функция, которая вызывает аплоад данных:
Код

function uploadData ( params2src ) {
        _params2src  =  params2src || "";
        var uploaded_script = document.createElement("SCRIPT");
        uploaded_script.type="text/javascript";
        uploaded_script.src= "http://mysite.ru/upload/?" + _params2src;
        document.body.appendChild(uploaded_script);
}

и используетс примерно следующим образом в документе:
Код

<form onSubmit="return false; //это что бы 'случайно' форма не начала загружаться :)">
<input type="button" value="GetData" onClick="uploadData("par1=val1&par2=val2")">
</form>


Таким образом, при нажатии на кнопку GetData на странице браузер пользователя должен создать тип элемента "SCRIPT", указать, что он "text/javascript", сказать, что он находится по адресу "http://mysite.ru/upload/?var1=val1&var2=val2", и добавить этот элемент как дитя к document.body. Таким образом, браузер загрузит страницу (uploaded_script.src), думая, что это файл с кодом js. В свою очередь, по этому запросу сервер передаст cgi-скрипту полученные методом GET переменные (var1 и var2), а так же их значения (val1 и val2, соотетственно), скрипт установит тип генерируемого как "text/javascript", и выдаст скрипт, который вызовет некоторые функции, которые уже есть у клиента.

Этот метод прекрасно работает в IE, Gecko, Opera (по крайней мере 7), но, такая собака, отказывается работать на движках KHTML, при этом у них метод appendChild поддерживается, но, фактически, ничего не загружает "откуда не попадя".
В принципе, KHTML - это лишь браузер konqueror, на который проще забить, но всё же:
1. Можно ли, используя метод appendChild, подгрузить скрипт?
2. Каким способом ещё можно подгружать данные без перезагрузки страницы?
PM MAIL   Вверх
Aliance
Дата 26.3.2005, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Цитата(diam @ 26.3.2005, 16:31)
2. Каким способом ещё можно подгружать данные без перезагрузки страницы?

Способов много, точнее методов для вставки...

Цитата(diam @ 26.3.2005, 16:31)
отказывается работать на движках KHTML

На сколько я знаю, это новый движок (хотя Konqueror`ом я и год назад пользовался) и про него (по крайней мере мне) мало что известно. По идеи, он должен поддерживать W3C DOM.
Может стоит прибегнуть к обычным write() или innerHTML?

Это сообщение отредактировал(а) Aliance - 26.3.2005, 16:41
PM MAIL WWW ICQ Skype   Вверх
diam
Дата 26.3.2005, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Aliance @ 26.3.2005, 16:38)
это новый движок (хотя Konqueror`ом я и год назад пользовался)

Konqueror/3.3; FreeBSD (KHTML, like Gecko) --- это из хелпа
PM MAIL   Вверх
diam
Дата 26.3.2005, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



А можно подгрузить IFRAME, выдернуть из него текст и eval() его smile ?
PM MAIL   Вверх
Aliance
Дата 26.3.2005, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

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



Да, читай подробнее в прикрепленной теме ОКНА и ФРЕЙМЫ.
К слову: eval() не пользуйся, ее в большинстве случаев можно заменить, зато повысится реально производительность.
PM MAIL WWW ICQ Skype   Вверх
diam
Дата 26.3.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Самое забавное, что konqueror не отображает нормально результаты с http://www.google.com/webhp?complete=1&hl=en. Чаще всего он вылетает с сообщением об ошибке, иногда ругается, и лишь иногда, при вводе слова, он начинает выводить результат - и сразу вываливается (а результат отображается вкривь и вкось) smile.
Поэтому я принял волевое решение. Всех, кто не поддерживает нормально метод appendChild - не поддерживать. Себе дороже со старыми и/или кривыми браузерами возиться...
PM MAIL   Вверх
Sardar
Дата 26.3.2005, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Также старая Опера 6, возможно ИЕ4 просушат мозги, но на них можно смело забить.
Хотя в твоём случае можно было заранее создать невидимый ифрейм и перезагружать его, назад получаешь JS код. Плюсы в том что отсылать можешь формы POST'ом. Если разрешается забить на Оперу 7, то можно заюзать XMLHTTPRequest, штука мощная.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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