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

HTML+CSS+JavaScript

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

 

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

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

тема: JavaScript+PHP
 
 автор: talka   (06.06.2009 в 20:26)   письмо автору
 
 

есть js-функция search(ArrJS)
есть php-переменная $ArrForJS
$ArrForJS="{'user' : 'Иванов', 'book' : '4'}";
и есть <input type='hidden' id='test' value='".$ArrForJS."'>

вызов функции по событию onclick
так: search(".$ArrForJS.") - получается,
а так: search(document.getElementById('test').value) - не получается

Объясните, пожалуйста, почему.
Разве $ArrForJS не равно document.getElementById('test').value?

  Ответить  
 
 автор: PAT   (06.06.2009 в 20:40)   письмо автору
 
   для: talka   (06.06.2009 в 20:26)
 

Приведите здесь кусочек кода, где есть этот <input> и где прописан вызов функции по onclick.

Только выводите не ваш начальный PHP-код, а код, полученный браузером (т.е. тот код, который можно посмотреть, нажав на кнопку "Вид --> Просмотр исходного кода").

  Ответить  
 
 автор: talka   (06.06.2009 в 21:49)   письмо автору
 
   для: PAT   (06.06.2009 в 20:40)
 

Работает

<?php
$ArrForJS
="{'user' : 'Иванов', 'book' : '4'}";
echo 
"<div onclick=\"search(".$ArrForJS.");\">test</div>";
?>

Не работает (из исходного кода)

<input type='hidden' id='test' value="{'user' : 'Иванов', 'book' : '4'}">
<div onclick="search(document.getElementById('test').value);">test</div>

  Ответить  
 
 автор: talka   (06.06.2009 в 22:24)   письмо автору
 
   для: talka   (06.06.2009 в 21:49)
 

<script>
function search(ArrJS) {
alert(ArrJS);
}
</script>
<?php 
$ArrForJS
="{'user' : 'Иванов', 'book' : '4'}"
echo 
"<input type='hidden' id='test' value=\"".$ArrForJS."\">";
echo 
"<div style='cursor:hand;' onclick=\"search(".$ArrForJS.");\">test</div>"
echo 
"<div style='cursor:hand;' onclick=\"search(document.getElementById('test').value);\">test2</div>"
?>

алерт test: [object Object] - правильно
алерт test2: {'user' : 'Иванов', 'book' : '4'} - нет

где-то здесь и ответ, видимо... Мне, правда, не видимо :(

  Ответить  
 
 автор: PAT   (06.06.2009 в 23:26)   письмо автору
 
   для: talka   (06.06.2009 в 21:49)
 

1. Беру ваш код :
<input type='hidden' id='test' value="{'user' : 'Иванов', 'book' : '4'}">
<div onclick="search(document.getElementById('test').value);">test</div> 

2. Заменяю в нём всего одно слово:
<input type='hidden' id='test' value="{'user' : 'Иванов', 'book' : '4'}">
<div onclick="alert(document.getElementById('test').value);">test</div> 

3. Запускаю в браузере, кликаю и констатирую - РАБОТАЕТ!!!
Алерт выдаёт строку, точно соответствующую той, коя записана в атрибуте VALUE инпута.

НИЧЕГО другого алерт показать и не может.
Тип данных, хранящихся в VALUE - всегда СТРОКА. И только СТРОКА.
Догадаться о том, что вы хотите видеть фактическую строку объектом браузер не может:-)
Ибо он не обладает (в отличие от вас) абстрактным мышлением.

  Ответить  
 
 автор: talka   (06.06.2009 в 23:38)   письмо автору
 
   для: PAT   (06.06.2009 в 23:26)
 

но почему тогда в функции алерт первого вариант "видит" объект?

  Ответить  
 
 автор: talka   (06.06.2009 в 23:41)   письмо автору
 
   для: talka   (06.06.2009 в 23:38)
 

<?php  
$ArrForJS
="{'user' : 'Иванов', 'book' : '4'}";  
echo 
"<input type='hidden' id='test' value=\"".$ArrForJS."\">"
echo 
"<div style='cursor:hand;' onclick=\"alert(".$ArrForJS.");\">test</div>";  
echo 
"<div style='cursor:hand;' onclick=\"alert(document.getElementById('test').value);\">test2</div>";  
?>

алерт test: [object Object]
алерт test2: {'user' : 'Иванов', 'book' : '4'}

вот этот момент я и прошу объяснить

  Ответить  
 
 автор: PAT   (07.06.2009 в 00:06)   письмо автору
 
   для: talka   (06.06.2009 в 23:38)
 

Потому что ваш PHP-код делает следующее:
<input type='hidden' id='test' value="">

<script>
var s = {'user' : 'Иванов', 'book' : '4'};

document.getElementById ('test').value = "{'user' : 'Иванов', 'book' : '4'}";

alert (s); //видит ОБЪЕКТ

alert (document.getElementById ('test').value); //видит СТРОКУ
</script>

  Ответить  
Rambler's Top100
вверх

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