WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




Передача и обработка данных


Прислал: Alexey [ 11.04.2001 @ 17:11 ]
Раздел:: [ Веб-технологии ]


Передача и обработка данных

Мало где вы сможете встретить рассматриваемые здесь вопросы. Почему-то большинство создателей учебников по JavaScript и DHTML старательно умалчивают данный аспект. Меж тем тема интересная, не сложная и весьма полезная.

Как передать данные в *.html-файл.

Очень просто - через его адрес (URL). После адреса ставите знак вопроса и после него задаете параметр, который хотите сообщить файлу. Если нужно передать несколько параметров, разделяете их амперсандом. Например, так
"file.html?1234" или
"file.html?12&42&param&78456"

Можно передавать данные из формы, используя метод get. В этом случае вызов файла будет выглядеть как
"file.html?name1=value1&...nameX=valueX"

Как получить переданные данные

Как вы догадываетесь, обрабатывается все с использованием JavaScript.
var ex_url=location.search.substring(1);
То бишь мы записываем в переменную ex_url все то, что находится после знака вопроса. Если вы передаете один параметр, то все - обрабатывайте ex_url (кстати, ее тип - строка) и в зависимости от ее значения что-либо делайте. Если вы передaвали несколько параметров, надо их разделить.
var param=ex_url.split('&');
Теперь мы получили массив param, содержащий переданные значения. Если вы передавали данные через форму, то надо еще избавиться от знаков равенства.
var values = new Array();
for(i=0; i<param.length;i++) {
var b = param[i].split('=');
values[b[0]] = unescape(b[1]);
}

Теперь все данные занесены в хеш. Если строка запроса была, например,
"file.html?name=alex&age=28&left=right"
то получили массив
values[name]="alex";
values[age]="28";
values[left]="right";


или
values[0]="alex";
values[1]="28";
values[2]="right";

кому как больше нравится.

Пример использования

В качестве примера рассмотрим такую ситуацию. Есть набор фотографий и, помимо обычной галереи с предпросмотром, нужно организовать слайд-шоу. Можно, конечно, изменять свойство src картинок, но Netscape, например, не позволяет при этом изменять размеры и все картинки будут втиснуты в рамки самой первой, следовательно, искаженными. К тому же, желательно, чтобы при просмотре новой фотографии обновлялись и баннеры, а вставлять для каждого свой скрипт неохота. Поэтому сделаем следующее:

Для простоты предположим, что все фотографии сохранены в файлах 1.jpg, 2.jpg, 3.jpg и так далее. Делаем страничку, а в том месте, где должна быть фотография, вставляем следующий скрипт.

<table>
<script language=javascript>
max_num=100;
ex_url=location.search.substring(1);
if (ex_url.length==0) {
number=1;
}
else {
number=parseInt(ex_url,10);
}
prev=number-1;
next=number+1;
if (number<2) {
}
else {
document.write("<a href=file.html?"+prev+">back</a>");
}
if (number==max_num) {
}
else {
document.write("<a href=file.html?"+next+">next</a><br>");
}
document.write("<img src="+number+".jpg>");
</script></table>

Комментарии: max_num - число фотографий. Я написал 100, но в принципе их число неограничено, вставьте свое значение. над картинкой выводятся ccылки на предыдущую и последующую. Для первой нет предыдущей (но вы можете вставить ссылку на другой файл), для последней нет следующей (и опять вы можете вставить ссылку на другой файл). Eсли никакие параметры не передаются, то есть не указан номер просматриваемой фотографии, показывается первая. Для простоты примера я не вставлял "защиту от дураков" - то есть если кто-то решит передать в файл не число, а просто набор символов. В этом случае просто не будет никакой картинки.

Скорее всего, при проверкe работоспособности описанного выше метода в домашних условиях, у вас возникнут проблемы. Дело в том, что для приема данных нужен сервер. Windows без наворотов такие запросы не понимает - выдает радостное сообщение. Если у вас не стоит Apache или сервер Windows NT, и вы не хотите с ними возиться - и не надо, установите Small HTTP Server. Эта манюсенькая программа (размером менее, чем сумма всех баннеров на данной странице) позволит вам тестировать в домашних условиях CGI, SSI, PHP и т.д. Найти ее можно здесь


Автор: Alexey Godovnik
Школа начинающего Юзера.




 :::::  Сергей "OpenMind" пишет 09.10.2004 @ 14:55 
Спасибо! Действительно полезно. Использую HTML и проч. связанные с ним технологии уже не первый год, но более толкового объяснения ещё не встречал.
Сергей "OpenMind"
 :::::  msivruk пишет 02.11.2004 @ 12:39 
А как вставить предопределенный текст из определенного файла?
С картинками все работает, но этим никого не удивишь
Хотя должен признать просто и оригинально, НО нужен текст из text.txt
 :::::  типа автор пишет 02.11.2004 @ 18:04 
об этом я тоже несколько лет назад писал. это можно сделать с помощью SSI, PHP и пр, а если серверные языки недоступны и необходимо использовать Jvascript, читайте тут - http://mysite.hut.ru/content/jssi.shtml,
а помимо этого есть еще iframe, src которого можно динамически генерировать на javascript...

ЗЫ. мои русскоязычные сайты мною не поддерживаются уже почти 4 года, на разные вопросы и предложения я как правило не реагирую.
Имя:
Email:
URL

Введите сумму двух чисел девять и шесть (девять+шесть=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0358169