| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Наши скрипты > Обновление данных через XMLHttpRequest |
| Автор: Black 19.6.2005, 00:37 | ||
Скрипт:
Данный код посылает данные методом POST на сервер без перезагрузки страницы. Причем посылка данных происходит каждые 5 сек через setInterval. Но это всего лишь пример. Можно и без постоянных обновлений послать запросы. Вообщем, я показал пример. Ваша задача оклиматизировать его под ваши веб-приложения. Надеюсь, этот код будет кому-то полезен. Ответ от сервера должен содержать JavaScript-код который будет выполнен на странице через eval() Если будете использовать скрипт в ваших проектах желательно сохранять копирайт или хотя бы меня известите. Работает в MSIE 6.0, FireFox 1.0, Opera 8.01 |
| Автор: Irokez 19.6.2005, 00:50 |
| а если у меня имеется форма и требуется послать все поля из этой формы .. мне как, упаковывать все данные в виде строки: name1=value1&name2=value2? |
| Автор: Black 19.6.2005, 01:08 | ||||||||
Да. Каждому элементу формы можно дать id, затем при нажании на опр. кнопку на которую мы повесим функцию, которая пробежит по всем полям формы.
а затем сформируем переменную data
затем все данные скормим приведенному выше скрипту.
|
| Автор: Irokez 19.6.2005, 01:27 | ||
не вряд ли но вопрос в другом: отправятся ли данные если: а) много полей б) большой объем информации, например текст (содержащий переход на новую строку) |
| Автор: Black 19.6.2005, 01:39 | ||||||
Irokez
ну это кто во что горазд
да отправятся.
необходимо преобразовать в UTF-8, иначе будут глюки. Необходимо каждое поле формы пропустить через: encodeURIComponent(element); а затем сформировать date где все данные скрепить через & но не надо саму переменную date пропускать через encodeURIComponent(element); |
| Автор: Irokez 19.6.2005, 02:05 | ||
т.е. data.. а ошибки 414 too long request не будет? |
| Автор: Sardar 19.6.2005, 02:32 | ||||
Кодом всё сказанное выше:
Добавлено @ 02:32
Данные постом идут, там хоть мегабайты. |
| Автор: Irokez 19.6.2005, 02:45 |
| Sardar то что нужно! спасибо! |
| Автор: Burrr 4.9.2005, 18:32 |
| Замечательный код. Есть только вопрос насчёт копирайта, о котором говорится в первом посте (я в этой теме не проф, поэтому прошу извинить, если кого-то случайно обидят мои рассуждения). Насколько я понимаю первый скрипт отличается от обычно-используемого для httpRequest-запросов тем, что в него добавлена строка для Оперы: var obj = new ActiveXObject('Msxml2.XMLHTTP'); , а также нехитрая функция setInterval(). В чём же такая изюминка этого скрипта, чтобы предупреждать (хоть и желательно) автора об его использовании? Неужели настолько оригинальная идея? |
| Автор: Aliance 4.9.2005, 18:38 |
| Burrr Используй PM http://forum.vingrad.ru/style_images/1/p_pm.gif для задания таких вопросов, IMHO. |
| Автор: Sardar 4.9.2005, 22:54 |
| Burrr изначальный код это стандартный, везде описываемый пример, можешь написать "с нуля" сам и поставить свой копирайт Доработанный мной код это уже оригинальная идя. Я придумал и реализовал идею, но это не значит что код накладывает какие либо ограничения на использование. Можешь написать по новой сам, либо взять приведённый код. Во втором случае просто добавь имена и мыло тех, кто работал над кодом, просто из уважения. |
| Автор: Burrr 5.9.2005, 10:06 |
| Ясно, спасиба! Просто интересно было узнать. |
| Автор: Guest 17.11.2005, 14:43 |
| стоп... что то вы меня запутали Sardar а в чем разница между громоздким кодом который описан, у Котерова(JSHttpRequest), твоим JSInteractiveRequest или компактным этим? кроме метода передачи, разницы не вижу... и там и там обновление страницы... |
| Автор: Sardar 18.11.2005, 01:19 | ||
В поддержке браузерами. Например мой код не будет работать в Opere 8 и Netscape 8, т.к. те категорически отказываються запускать динамически созданные скрипты, вернее запускают, но аргументы убиваються. Это никак не обходиться, только использованием XMLHttpRequest вместо этого. В либе Котерова как раз такой подход реализован, если есть возможность использовать XMLHttpRequest, то он и используеться, иначе альтернативный способ скриптами. В коде DIRECTOR используеться только XMLHttpRequest. Как вывод: либа Котерова вобрала в себя оба подхода тем самым может работать почти везде, хотя плата за это немного разбухшим кодом. Все кто спрашивает динамику, советую именно её, т.к. свою никак не добью, нет времени |
| Автор: fregs 18.11.2005, 09:09 |
| Sardar у Котеровской возникает проблема у пользователей ИЕ5... кодировка |
| Автор: Иль 18.11.2005, 23:03 | ||
Здрасте... Взято тут http://jibbering.com/2002/4/httprequest.html , только обязателно найдите (на этой же странице) условия копирайта и строжайше им следуйте. Только ищите их хорошо. |
| Автор: Sardar 19.11.2005, 18:49 | ||||||
Иль кусочек кода инициализации XMLHttpRequest приводиться в любой статье, накладывать на такой код копирайт, всё равно что накладывать копирайт на:
fregs oн пошёл по пути раскодирования %uHHHH мнемоник юникода или отключения его вовсе, что приводит к кракозябрам в определённых ситуациях. Я кодирую текст в UTF-8, затем обычним urlencode, что больше по трафику, но надёжней. Добью не ранее января, ибо работы не мерянно, да и к тому времени "отточиться" техника XMLHttpRequest под Оперой. |
| Автор: fregs 24.1.2006, 13:33 |
| 2 Sardar кстати |
| Автор: Sardar 28.1.2006, 00:36 |
| [offtop] Прямо аврал Ещё сессия, у нас она январь-февраль, сдача проекта и начало стажа. На форум на час прибегаю что бы только мусор почистить, в новичкас уже целая страница где я не был ещё Остро не хватает активного комодератора, не то что софтину дописывать. Юзать я её буду не ранее марта, тогда и возрожу. Пожалуйста используйте JSHttpRequest от Котерова, хороший проверенный софт. [/offtop] |
| Автор: Greendrake 10.2.2006, 11:53 |
| Кто-нить в курсе как отправить input-поле типа file методом POST через XMLHttpRequest ? |
| Автор: 12345c 10.2.2006, 13:00 |
| Здесь в форуме ряд тем об этом но ни в одной не достигли успеха, пришли к выводу, что не идёт. Но в Mozilla/XUL что-то получилось, судя по теме в http://xpoint.ru/forums/programming/XUL/thread/27174.xhtml |
| Автор: Greendrake 23.3.2006, 12:50 | ||
Увидел что это реализовано на eBay при загрузке изображений. Загружаются без обновления страницы. Работает и в IE, и в Лисе, и в Опере. Буду разбираться как это сделано... |
| Автор: 12345c 23.3.2006, 13:19 |
| Через фреймы, иначе бы не работало. |
| Автор: 244760100 26.3.2006, 15:16 |
| я очень начинающий по JavaScript, и могу покозаться не ламером.....гы.. но будте бодры ответить мне на следующее...>>> а что нжно изменить в коде (сообщение 1) , что бы он грузил мой файл, который мне нужен? и еще... какие-то там переменные name1, name2 , value1 & value2??? одним словом, мне нужен код чтоб делал все то, что по этой ссылке >> http://forum.vingrad.ru/index.php?act=ST&f=10&t=89026&unread=1 |
| Автор: Aliance 27.3.2006, 00:03 |
| В работу. Тут не коды пишут, а помогают ВАМ их написать. |
| Автор: 244760100 27.3.2006, 13:00 |
| ну значит, если не трудно, помогите.... |
| Автор: CyClon 28.3.2006, 20:03 |
| Афтор, зачОт! Давно меня волновал этот вопрос. Но тут у меня еще несколько-ко вопросов. Какой код будет для запроса страницы, не отправляю POST. Просто я только вчера начал изучать JS, переделываю скрипт слоев, посему не очень соображаю, особенно в этих новых технологиях ;) P.S. Не интересуют ответы типо "Ничего не пиши в POST" и т.д. Меня интересует более компактный код. |