Отправить данные с контейнера (XMLHttpRequest)
Имеется пример кода с формой и контейнером. С формы данные успешно отправляются на скрипт test1.php и возвращаются в контейнер без перезагрузки страницы. Нужно отправить данные с контейнера (или это может быть тег гиперссылки). Не получается... Получаю undefined в ответе. Клик на контейнер с вызовом функции find2() должен послать данные на test2.php. Как это сделать?
main.htm <html> <head> <script src="JsHttpRequest.js"></script> <script language="JavaScript"> function find1() { JsHttpRequest.query ( 'test1.php', // backend { 'pass': document.getElementById("pass").value }, function(result) { document.getElementById("ans1").innerHTML = result["str1"]; }, true // disable caching ); }; function find2() { JsHttpRequest.query ( 'test2.php', // backend { 'name': document.getElementById("name").value }, function(result) { document.getElementById("ans2").innerHTML = result["str2"] }, true // disable caching ); } </script> </head> <body> <div style="cursor: pointer" id="name" value="данные для ans2" onclick="find2()"> Нажать тут для срабатывания find2() </div> <br> <form method="post"> Пароль: <br> <input name="pass" type="text" size="18" id="pass"> <br> <input type="button" value="Отправить" onclick="find1()"> </form> <div id="ans1"> Тут будет результат ans1 </div> <div id="ans2"> Тут будет результат ans2 </div> </body> test1.php <?php require_once "JsHttpRequest.php"; $JsHttpRequest =& new JsHttpRequest("windows-1251"); $pass = $_REQUEST['pass'];//получаем из формы $echo .= '<div>'.$pass.'</div>';//это будем выводить $GLOBALS['_RESULT'] = array(//создаёт массив в ответ "str1" => $echo,//отправляем ответ ); ?> test2.php <?php require_once "JsHttpRequest.php"; $JsHttpRequest =& new JsHttpRequest("windows-1251"); $name = $_REQUEST['name'];//получаем из контейнера $echo .= '<div>'.$name.'</div>';//это будем выводить $GLOBALS['_RESULT'] = array(//создаёт массив в ответ "str2" => $echo,//отправляем ответ ); ?> |
document.getElementById("name").value <div style="cursor: pointer" id="name" value="данные для ans2" onclick="find2()"> Соответсвенно нужно использовать не .value, а .....? |
В том то и дело, что я не знаю. Подскажите.
|
Тогда все ясно.
document.getElementById("name").value применяется для получения данных из input и texarea, select, и т.д. элементов HTML у которых вообще может быть value. У div может быть value? Нет, поэтому применяется innerHTML. Домашнее задание: исправить ошибку самостоятельно. |
Мегаспасибо. Заработало.
|
Ещё вопрос образовался. Можно ли динамически менять id контейнера? Типа
<a onmouseover="this.id='idForText'" onmouseout="this.id='null'" onclick="find2()">Тут какой-то текст</a> На странице много таких блоков, нужно, чтоб id="idForText" было только у того, на который я нажимаю и его уже искала функция find2(). -------------------- Похоже при post передаче происходит перевод в нижний регистр, из за этого не срабатывает. Только начал яваскрипт изучать, могу на элементарном спотыкаться.... |
Цитата:
2. Да можно. 3. Если много, то проще будет отправлять ссылку (т.е. node) на данный элемент в функцию. <a href="#" onclick="find2(this); return false;">Тут какой-то текст</a> function find2(obj){ alert(obj.innerHTML); } |
Спасибо за инфу.
Сумел запустить, своим способом: onmouseover="this.id='idForText'" Браузер что-ли глючил. |
Часовой пояс GMT +3, время: 15:06. |