Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Передача данных из формы
 
 автор: stoutenko   (04.04.2007 в 14:07)   письмо автору
 
 

Народ помогите разобраться вот с этим - Передача данных через Cookie.
Вот есть библиотека (cookies.js):

function getExpDate(days, hours, minutes)

var expDate = new Date(): 
if (typeof days =="number" && 
typeof hours == "number" && 
typeof hours == "number")
{
 expDate.setDate(expDate.getDate() + 
parseInt(days)): 
expDate.setHours(expDate.getHours() + 
parselnt(hours)):
 expDate.setMinutes(expDate.getMinutes() + 
parselnt(minutes)):
 return expDate.toGMTString();
 } }
function getCookieVal(offset)
 {
 var endstr = document.cookie.indexOf (":", offset);
 if (endstr == 1)
 {
 endstr = document.cookie.length: 
}
 return unescape(document.cookie.substring(offset. endstr));
 }
 function getCookie(name)
 {
 var arg = name + "=";
 var alen = arg.length;
 var clen = document.cookie.length;
 var i = 0;
 while (i < clen)
 {
 var j = i + alen;
 if (document.cookie.substring^, j) == arg)
 {
 return getCookieVal(j): 
}
 i = document.cookie.indexOf(" ". i) + 1;
 if (i == 0) break:
 }
 return null; 
}
 function setCookie(name, value, expires, path, domain. secure)
 {
 document.cookie = name + "=" + escape (value) + ((expires) ? ": expires=" + expires :
 "") + ((path) ? ": path=" + path : "") + 
((domain) ? ": domain=" + domain : "") + 
((secure) ? ": secure" : "");
 }
 function deleteCookie(name.path.domain) 
{
 if (getCookie(name))
 {
 document.cookie = name + "=" + ((path) ? 
": path=" + path : "") + ((domain) ? 
": domain=" + domain : "") +
 ";expires=Thu. 01 Jan 70 00:00:01 GMT"; 
}
 }


И вот такие 2 функции.


<script type="text/javascript" src="cookies.js">
</script>
 <script language="JavaScript" type="text/javascript">
 function saveData()
 {
 var data = document.forms[0].userName.value;
 var expDate = getExpDate(180. 0. 0): 
setCookie("userName". data. expDate): 
}
 </script>
 <body onunload="saveData()">



<script type="text/javascript" src="cookies.js">
</script>
 <script language="JavaScript" type="text/javascript">
 function readData()
 {
 var data = getCookie("userName): 
document.forms[0].username.value = data:
 } </script>
 <body onload="readData()">


Вроде как бы все понятно. Библиотека cookies.js реализует функции записи, чтения кукисов и время их хранения. 2 функции снизу тоже вроде ясно, что одна выполняет функцию запись куки, а вторая чтение. Вопрос в том как правильно написать чтобы дата записывалась из формы (forma1) из поля имя (name1) на первой странице (index.html) и передавалась на вторую popup страницу (result.html), скажем в пустую таблицу. Ниже соответственно index и result... в них я уже вставил "выполнить функции". Но скрипты пока не вставлял, т.к. это далее суть вопроса.

<html>
<script src="cookies.js">
</script>
<body>
 <form name="forma1" action="???" method="post">
 Ваше имя: <input name="name1" type="text" size="25"><br>
 Выберите вариант: <select name="userchose" size="1">
 <option value="1num">Вариант 1</option> 
<option value="2num">Вариант 2</option> 
<option value="3num">Вариант 3</option>
 </select><br>
 <input name="ok-button"
 type="submit"
 value="Послать"
 onClick="javascript:window.open('result.html', '',
 'Toolbar=0, Location=0, Directories=0, 
Status=0, Menubar=1, Resizable=0, 
Scrollbars=0, Copyhistory=1, Width=640, 
Height=480, Top=0, Left=0');saveData();"> 
</form> 
</body>
 </html>


<html> 
<script src="cookies.js"></script>
 <body onLoad="readData()">
 <table width="500" border="0" cellspacing="0" cellpadding="0">
 <tr>
 <td width="163">
<div align="right">Ваше имя: </div></td>
 <td width="10">&nbsp;</td>
 <td width="333">Сюда нужно вставить имя</td> </tr>
 <tr> <td>&nbsp;</td>
 <td>&nbsp;</td> 
 <td>&nbsp;</td> </tr>
 <tr> <td><div align="right">Вы выбрали вариант: </div></td>
 <td>&nbsp;</td>
 <td>Сюда нужно вставить выбранный вариант</td> </tr> 
<tr> <td>&nbsp;</td>
 <td>&nbsp;</td>
 <td>&nbsp;</td>
 </tr>
 <tr> <td><div align="right">Ответ:</div></td>
 <td>&nbsp;</td>
 <td>А здесь вставить "мой ответ"</td>
 </tr> </table> </body> </html>


Вопрос 1: Как правильно записать параметры:

var data = document.forms[0].userName.value;
setCookie("userName". data. expDate):

var data = getCookie("userName):
document.forms[0].username.value = data:

Вопрос 2:
В index.html есть тэг select, на каждую опцию стоит value.
Как сделать так, чтобы в поле "мой ответ" отразилось следующее:
if value="1num" - то отражалось например слово Привет!
if value="2num" - то Хело!
if value="3num" - то Бла-Бла!

Спасибо всем кто ответит.

   
 
 автор: stoutenko   (04.04.2007 в 14:38)   письмо автору
 
   для: stoutenko   (04.04.2007 в 14:07)
 

первый вопрос решен....
решил его другим способом... с помощью location.search....все работает.

А вот второй вопрос остается еще актуальным!!
С этим серьезная проблема, т.к. в JS не пендрю почти.
Подскажите как быть!
Мне предложили создать массив с ключами и значениями, только на словах (без примеров)
я так вроде понял, но написать все равно не могу.
Пока пошел вот таким путем:

<script language="JavaScript">
<!--
function read_select()
{
var msg
msg = document.location.getElementById("forma1").options[document.getElementById("forma1").selectedIndex].value);
if (msg=="num1") {document.write(unescape("Привет!"))}
else if (msg=="num2") {document.write(unescape("Хело!"))}
else if (msg=="num3") {document.write(unescape("Бла-бла!"))}
}
//-->
</script>

я понимаю что тут каша, прошу помочь.
Заранее спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования