Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как передать значение узла методом GET во фрейм ?? (https://javascript.ru/forum/events/3190-kak-peredat-znachenie-uzla-metodom-get-vo-frejjm.html)

glutton 26.03.2009 12:28

Как передать значение узла методом GET во фрейм ??
 
Здравствуйте! Прошу помощи...
Не могу заставить работать такую вот задумку:


требуется передать текст из ячейки таблицы в переменную PHP для страницы в IFRAME
т.е. сформировать вот такую конструкцию:
<form target=FrameName action="../basket_preview.php?k=1&PHPSESSID=...>
Чтоб потом поймать переменную "k" в виде $_GET['k'] на странице basket_preview.php


Проблема: в явном виде такая конструкци работает - если просто прописать её так как есть. - То есть с этой стороны подвоха нет. - НО! Как только пытаюсь сформировать эту строку динамически, - всё -отбой.

Имеется страница с ценой и выбором количества товара (убрал все лишнее):
<FORM METHOD=POST TARGET=FrameName
ACTION="javascript:AddGoods(document.getElementByID('kol').firstChild.nodeValue)">
<!-- вот эта часть (выше) не срабатывает-->
<table>
  <tr>
     <td ID="kol">
        <!-- это значение и требуется передать методом GET -->
        1
    </td>
  </tr>
</table>

<INPUT TYPE=HIDDEN NAME=tsena VALUE=<?echo $tsena?>>
<INPUT TITLE="В корзину" TYPE=IMAGE NAME=tocart SRC=cart.gif>
</FORM>


Вот описание функции для формирования строки:
<script type="text/javascript">
<!--
function AddGoods(k) {
	var x1="../basket_preview.php?k=";
	var x2=k;
	var x3="&PHPSESSID=";
	var x4="<?echo session_id()?>";
	location.href=x1+x2+x3+x4;
}
//-->
</script>


Так значение должно приниматься другой страницей, которая отображается в IFRAME name=FrameName:

if ( isset($_POST['tocart_x']) )  
{
	$line=array();
	$line['kol']=$_GET['k']; 
	$_SESSION['summa'] += $_POST['tsena']*$_GET['k'];
}


В итоге при нажати на кнопку "В корзину" ровным счетом ничего не происходит... - $_GET['k'] - пустая...

Заранее спасибо!

Gvozd 26.03.2009 12:33

неправильно:
document.getElementByID('kol').firstChild.nodeValue

правильно:
document.getElementByID('kol').innerHTML

glutton 26.03.2009 12:42

А мне ведь только цифру из ячейки передать надо. Тогда ведь не нужен innerHTML - ? Или я что-то не понимаю..
(сорри, я комментарий, наверное, выше чем требуется поставил)

Gvozd 26.03.2009 12:51

ну, так приведите к числу.
можно JS-ом, можно PHP
на ыоруме можно редактировать сообщения.
исправьте свое сообщение как вы считаете правильным.
PS ваша конструкция ничего дополнительного не даст, потому что у вас там только одна текстовая нода
PPS протупил с вашей функцией.она в принципе правильная.и вроде даже кросбраузерная.но ничего дополнительного она не даст по сравнению с innerHTML.более того, если у вас там окажутся "лишние" ноды(некоторые браузеры этим страдают), то работать перестанет

glutton 26.03.2009 13:06

Цитата:

Сообщение от Gvozd (Сообщение 15274)
ну, так приведите к числу.
можно JS-ом, можно PHP

Дело в том, что у меня прекрасно работает вот такая штука:

<td
onClick="ChangeKol('m',document.getElementById('kol').firstChild.nodeValue)">
  -
</td>

function ChangeKol(str,k) {
	if ("m" != str)
		{
		k++;
		document.getElementById('kol').firstChild.nodeValue=k;
		}
	else 
		{
		if (k > 1) {
			k=k-1;
			document.getElementById('kol').firstChild.nodeValue=k;
			}
		else return false;
		}
}


А вот строка для передачи не формируется..

Gvozd 26.03.2009 13:18

вы забыли закрывающую фигурную скобку в функции

glutton 26.03.2009 13:28

:) Добавил, спасибо.. Я ее уже после 1000-ной переделки кода потерял, наверное, все равно ничего не происходит...
При наведении мышки на кнопку "В корзину" в статусной строке отображается:
javascript:AddGoods(document.getElementByID('kol') .firstChild.nodeValue)

а должно, как я понимаю, отображаться, например:
javascript:AddGoods(1)

Gvozd 26.03.2009 13:33

нет, не должно.
более того, ябы вам посоветовал воздержатся от применения псевдопротокола javascript:
тем более в ACTION формы
тут можно отлично обойтись без него

glutton 26.03.2009 13:37

Цитата:

Сообщение от Gvozd (Сообщение 15283)
тут можно отлично обойтись без него

как ? :help:

Gvozd 26.03.2009 13:41

например повесить на onclick кнопки
главное надо добавить в конец обработчика return false
если обработчик вешаете прямо в атрибуте, то там же и пишите вконце return false


Часовой пояс GMT +3, время: 23:35.