Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2014, 16:39
Новичок на форуме
Отправить личное сообщение для Mushin Посмотреть профиль Найти все сообщения от Mushin
 
Регистрация: 14.12.2014
Сообщений: 5

Отправка данных формы по ссылкам, находящимся вне формы.
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 близки к нулю, прошу не пинать за это и оказать помощь как дилетанту, очччень надо...

Последний раз редактировалось Mushin, 14.12.2014 в 18:47.
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2014, 20:39
Новичок на форуме
Отправить личное сообщение для Mushin Посмотреть профиль Найти все сообщения от Mushin
 
Регистрация: 14.12.2014
Сообщений: 5

Сообщение от Rise Посмотреть сообщение
Mushin, что за пути такие?
"?p=chapter/page"
"?p=chapter/page&edit"
"?p=chapter/page&del"
Какой адрес у "другой страницы"? Что за "разные скрипты"?
У меня скрипт на РНР по этим путям ищет файл для вставки в шаблон. Например строка ?p=chapter/page, попадая в скрипт, преобразуется в вид:
$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>

Последний раз редактировалось Mushin, 14.12.2014 в 20:48.
Ответить с цитированием
  #3 (permalink)  
Старый 20.12.2014, 23:35
Новичок на форуме
Отправить личное сообщение для Mushin Посмотреть профиль Найти все сообщения от Mushin
 
Регистрация: 14.12.2014
Сообщений: 5

Вопрос поднимаю опять, т.к. мое решение не работает в IE.
Ответить с цитированием
  #4 (permalink)  
Старый 21.12.2014, 00:14
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

В форму надо добавить:
<input type="hidden" name="p" value="" />

И к нему в ссылках при клике назначить необходимое значение атрибуту value
<a href="#" onclick="document.f1.p.value = 'accounts/teachers'; document.f1.submit(); return false;">Link2</a>
Ответить с цитированием
  #5 (permalink)  
Старый 21.12.2014, 09:45
Новичок на форуме
Отправить личное сообщение для Mushin Посмотреть профиль Найти все сообщения от Mushin
 
Регистрация: 14.12.2014
Сообщений: 5

Сообщение от Malleys Посмотреть сообщение
В форму надо добавить:
<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>
Ответить с цитированием
  #6 (permalink)  
Старый 25.12.2014, 05:03
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от Mushin Посмотреть сообщение
Ссылка, согласно выше приведенному совету (она не работает ни в одном браузере):
<a href="" onclick="document.f1.p.value = '?p=accounts/schools/new_edit&new=write_data_school'; document.f1.submit(); return false;">Сохранить</a>
И не будет, поскольку здесь значение р принимает вид "?p=accounts/schools/new_edit&new=write_data_school"
В таком случае вам надо:
<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>
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2014, 21:13
Новичок на форуме
Отправить личное сообщение для Mushin Посмотреть профиль Найти все сообщения от Mushin
 
Регистрация: 14.12.2014
Сообщений: 5

Спасибо большое за помощь. Я, правда, уже решил свою проблему, поступил следующим образом:
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, после переименования все пошло "на ура!".
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка данных формы перед закрытием документа HarleyDavidson Events/DOM/Window 9 04.06.2014 19:28
отправка данных из формы и вывод полученных данных sxe jQuery 2 21.05.2013 00:34
Отправка данных формы AJAX`ом? Jopses jQuery 4 20.02.2013 12:34
Отправка данных не из формы EleGant Общие вопросы Javascript 4 17.06.2012 17:47
Проверка и отправка данных из формы Катерина Общие вопросы Javascript 2 25.03.2010 16:56