Отправка данных формы по ссылкам, находящимся вне формы.
1. Имеется форма:
<FORM action="?p=chapter/page" method="POST" id="show_content"> <INPUT type='checkbox' name='number1'> <INPUT type='checkbox' name='number2'> <INPUT type='submit' name='edit' id='edit' value='Изменить'> <INPUT type='submit' name='del' id='del' value='Удалить'> </FORM> 2. Имеются ссылки, вне формы: <a href="?p=chapter/page&edit" onclick="document.getElementById('show_content').submit('edit'); return false;">Изменить</a> <a href="?p=chapter/page&del" onclick="document.getElementById('show_content').submit('del'); return false;">Удалить</a> 3. Ожидаю получения данных $_POST в следующем коде (PHP): if(isset($_POST['edit'])) { echo "Будем редактировать."; } if(isset($_POST['del'])) { echo "Будем удалять."; } В приведенном примере, по любой из ссылок передаются методом POST только активные checkbox-ы, без информации о том, какая ссылка была нажата. Вопрос: Как передать состояние checkbox-ов разным скриптам, в зависимости от нажатой ссылки и, если возможно, как передавать данные $_POST на другую страницу, т.к. в моем примере тег action="?p=chapter/page" игнорируется. Мои знания JS близки к нулю, прошу не пинать за это и оказать помощь как дилетанту, очччень надо... |
Цитата:
$link = "/content/capter/page.php"; Далее, в нужном месте html-шаблона: <?php require_once getenv("DOCUMENT_ROOT").$link; ?> Тоесть, весь контент разложен по папочкам и автоматически инклудится. Очень удобно и скрипт не сложный. Ну, а ссылка: ?p=chapter/page&edit - то-же самое, только вместе с сылкой на страницу передается переменная $_GET['edit']. Со своей проблемой я справился, вот решение: <form name='f1' action="#" method="POST"> <input type="checkbox" name="t1" value="12345"> </form> <a href="#" onclick="document.f1.action='?p=accounts/teachers'; document.f1.submit(); return false;">Link2</a><br> <a href="#" onclick="document.f1.action='?p=accounts/schools'; document.f1.submit(); return false;">Link3</a><br> |
Вопрос поднимаю опять, т.к. мое решение не работает в IE.
|
В форму надо добавить:
<input type="hidden" name="p" value="" /> И к нему в ссылках при клике назначить необходимое значение атрибуту value <a href="#" onclick="document.f1.p.value = 'accounts/teachers'; document.f1.submit(); return false;">Link2</a> |
Цитата:
<FORM action = '#' method='post' name='f1'> <input type='hidden' name='p' value='' /> - - - - - - - - - - - - </FORM> Ссылка, согласно выше приведенному совету (она не работает ни в одном браузере): <a href="" onclick="document.f1.p.value = '?p=accounts/schools/new_edit&new=write_data_school'; document.f1.submit(); return false;">Сохранить</a> А это моя старая ссылка, которая работает везде, кроме IE (в IE выбрасывает на главную страницу и в $_POST ничего не попадает): <a href="" onclick="document.f1.action='?p=accounts/schools/new_edit&new=write_data_school'; document.f1.submit(); return false;">Сохранить</a> |
Цитата:
В таком случае вам надо: <form action="" method="post" name="f1"> <input type="hidden" name="p" value="" /> <input type="hidden" name="new" value="" /> </form> <a href="#" onclick="document.f1['p'].value = 'accounts/schools/new_edit'; document.f1['new'].value = 'write_data_school'; document.f1.submit(); return false; ">Сохранить</a> |
Спасибо большое за помощь. Я, правда, уже решил свою проблему, поступил следующим образом:
1. Разместил следующий скрипт в отдельном файле (submit.js): function submitbutton(obj, link) { document.forms[obj].action=link; document.forms[obj].submit(); return false; } 2. В head прописал путь к этому файлу <head> ... ... <script type="text/javascript" src="/scripts/submit.js"></script> </head> 3. Форма у меня не содержит скрытых полей, объявляется следующим образом: <FORM action = '#' method='post' id='f1'> ... ... </FORM> 4. Ссылка выглядит следующим образом: <a href="#" onclick="submitbutton('f1', '?p=accounts/operators/new_edit&edit');"> <span class="icon-edit"></span> Изменить </a> 5. В IE это сначала заработало, потом перестало, пришлось в конце шаблона, продублировать свой скрипт: ... ... <script type="text/javascript"> function submitbutton(obj, link) { document.forms[obj].action=link; document.forms[obj].submit(); return false; } </script> </html> После всех этих манипуляций работает отлично во всех браузерах, может я чего-то здесь и намудрил, но результат получил положительный! Да, и последнее, у меня не сразу заработала эта конструкция в IE, оказалось - из-за наличия в форме поля с именем action, после переименования все пошло "на ура!". |
Часовой пояс GMT +3, время: 21:42. |