Отправить данные с контейнера (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, время: 02:46. |