Как передать значение узла методом 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'] - пустая... Заранее спасибо! |
неправильно:
document.getElementByID('kol').firstChild.nodeValue правильно: document.getElementByID('kol').innerHTML |
А мне ведь только цифру из ячейки передать надо. Тогда ведь не нужен innerHTML - ? Или я что-то не понимаю..
(сорри, я комментарий, наверное, выше чем требуется поставил) |
ну, так приведите к числу.
можно JS-ом, можно PHP на ыоруме можно редактировать сообщения. исправьте свое сообщение как вы считаете правильным. PS ваша конструкция ничего дополнительного не даст, потому что у вас там только одна текстовая нода PPS протупил с вашей функцией.она в принципе правильная.и вроде даже кросбраузерная.но ничего дополнительного она не даст по сравнению с innerHTML.более того, если у вас там окажутся "лишние" ноды(некоторые браузеры этим страдают), то работать перестанет |
Цитата:
<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; } } А вот строка для передачи не формируется.. |
вы забыли закрывающую фигурную скобку в функции
|
:) Добавил, спасибо.. Я ее уже после 1000-ной переделки кода потерял, наверное, все равно ничего не происходит...
При наведении мышки на кнопку "В корзину" в статусной строке отображается: javascript:AddGoods(document.getElementByID('kol') .firstChild.nodeValue) а должно, как я понимаю, отображаться, например: javascript:AddGoods(1) |
нет, не должно.
более того, ябы вам посоветовал воздержатся от применения псевдопротокола javascript: тем более в ACTION формы тут можно отлично обойтись без него |
Цитата:
|
например повесить на onclick кнопки
главное надо добавить в конец обработчика return false если обработчик вешаете прямо в атрибуте, то там же и пишите вконце return false |
Часовой пояс GMT +3, время: 23:35. |