Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2010, 00:08
Интересующийся
Отправить личное сообщение для vladikas Посмотреть профиль Найти все сообщения от vladikas
 
Регистрация: 25.11.2010
Сообщений: 11

Отправить данные с контейнера (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,//отправляем ответ
    );
?>
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2010, 11:35
Кандидат Javascript-наук
Отправить личное сообщение для `p r o x y Посмотреть профиль Найти все сообщения от `p r o x y
 
Регистрация: 04.05.2009
Сообщений: 105

document.getElementById("name").value

<div style="cursor: pointer" id="name"  value="данные для ans2" onclick="find2()">

Соответсвенно нужно использовать не .value, а .....?
Ответить с цитированием
  #3 (permalink)  
Старый 26.11.2010, 11:59
Интересующийся
Отправить личное сообщение для vladikas Посмотреть профиль Найти все сообщения от vladikas
 
Регистрация: 25.11.2010
Сообщений: 11

В том то и дело, что я не знаю. Подскажите.
Ответить с цитированием
  #4 (permalink)  
Старый 26.11.2010, 12:03
Кандидат Javascript-наук
Отправить личное сообщение для `p r o x y Посмотреть профиль Найти все сообщения от `p r o x y
 
Регистрация: 04.05.2009
Сообщений: 105

Тогда все ясно.

document.getElementById("name").value

применяется для получения данных из input и texarea, select, и т.д. элементов HTML у которых вообще может быть value.

У div может быть value?
Нет, поэтому применяется innerHTML.

Домашнее задание: исправить ошибку самостоятельно.
Ответить с цитированием
  #5 (permalink)  
Старый 26.11.2010, 12:09
Интересующийся
Отправить личное сообщение для vladikas Посмотреть профиль Найти все сообщения от vladikas
 
Регистрация: 25.11.2010
Сообщений: 11

Мегаспасибо. Заработало.
Ответить с цитированием
  #6 (permalink)  
Старый 26.11.2010, 15:55
Интересующийся
Отправить личное сообщение для vladikas Посмотреть профиль Найти все сообщения от vladikas
 
Регистрация: 25.11.2010
Сообщений: 11

Ещё вопрос образовался. Можно ли динамически менять id контейнера? Типа
<a onmouseover="this.id='idForText'" onmouseout="this.id='null'" onclick="find2()">Тут какой-то текст</a>

На странице много таких блоков, нужно, чтоб id="idForText" было только у того, на который я нажимаю и его уже искала функция find2().
--------------------
Похоже при post передаче происходит перевод в нижний регистр, из за этого не срабатывает. Только начал яваскрипт изучать, могу на элементарном спотыкаться....

Последний раз редактировалось vladikas, 26.11.2010 в 16:18. Причина: Чёта надумал...
Ответить с цитированием
  #7 (permalink)  
Старый 26.11.2010, 16:28
Кандидат Javascript-наук
Отправить личное сообщение для `p r o x y Посмотреть профиль Найти все сообщения от `p r o x y
 
Регистрация: 04.05.2009
Сообщений: 105

Цитата:
Можно ли динамически менять id контейнера?
1. Не "контейнера", а HTML-тега или элемента.
2. Да можно.
3. Если много, то проще будет отправлять ссылку (т.е. node) на данный элемент в функцию.
<a href="#" onclick="find2(this); return false;">Тут какой-то текст</a>

function find2(obj){
  alert(obj.innerHTML);
}

Последний раз редактировалось `p r o x y, 26.11.2010 в 16:31.
Ответить с цитированием
  #8 (permalink)  
Старый 26.11.2010, 17:47
Интересующийся
Отправить личное сообщение для vladikas Посмотреть профиль Найти все сообщения от vladikas
 
Регистрация: 25.11.2010
Сообщений: 11

Спасибо за инфу.
Сумел запустить, своим способом:
onmouseover="this.id='idForText'"
Браузер что-ли глючил.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Контекстное меню как считать данные из таблицы xela1980 jQuery 25 31.05.2013 14:20
Два вопроса по XMLHTTPRequest Pluto Общие вопросы Javascript 7 22.09.2010 22:43
Помогите, незнаю как и чем считать и отправить данные с формы Arfey Общие вопросы Javascript 3 31.05.2010 16:01
Как отправить форму сразу на 2 адреса? Vlaimir Events/DOM/Window 4 26.10.2009 00:23
Создание и уничтожение XMLHttpRequest Vlas AJAX и COMET 9 22.05.2009 12:38