Ответ 1
Дайте ему имя.
<button type='submit' id='trash' name='trash' value="trash" class='red'>
Я использую jQuery для отправки формы при нажатии кнопки. Затем я хотел бы проверить значение кнопки, однако это не отправляется в Safari и Chrome. Зачем? Есть ли работа вокруг?
Протестируйте следующий код в IE/FF, чтобы увидеть, что он работает, а затем протестируйте его в Safari/Chrome, чтобы убедиться, что это не так:
ButtonPostTest.php:
<?php
if(isset($_POST['testBtn'])) {
echo $_POST['testBtn'];
}
?>
<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#btn').click(function() {
$('form').submit(); // submit the form
});
});
</script>
</head>
<body>
<form action="" method="post">
<button id="btn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button>
</form>
</body>
</html>
UPDATE:
То же самое происходит с input
:
<input id="btn" class="page-btn" type="submit" name="testBtn" value="Post this"></input>
Кроме того, это только проблема при отправке с помощью jQuery .submit()
- без этого, он подает штраф с помощью кнопки или ввода.
Дайте ему имя.
<button type='submit' id='trash' name='trash' value="trash" class='red'>
Как сказано выше, при использовании тега <button>
вам нужны как name=""
, так и value=""
, например
<button name="Search" value="Simple" type="submit">Search</button>
VS
<button name="Search" value="Advanced" type="submit">Search</button>
В этом примере ваши данные POST будут иметь пару Key Value:
Поиск Простой
или
Поиск Дополнительно
И затем, основываясь на этом значении POST, вы можете написать свой код, чтобы предпринять соответствующие действия.:)
то есть. вам не нужно использовать вход, просто используйте кнопку с именем/значением, и все будет хорошо.
Я думаю, что вы обнаружили ошибку webkit.
Я получаю то же самое тестирование в Chrome, ваша форма:
<form action="" method="post">
<button id="btn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button>
</form>
Это не отправляет данные. Если, однако, я добавляю другой элемент, в частности вход:
<form action="" method="post">
<input type="hidden" name="shim" value="" />
<button id="testBtn" class="page-btn" type="submit" name="testBtn" value="Yes Button value is posted!">POST IT!</button>
</form>
Это отправляет оба значения. Это без JavaScript. Когда вы добавите элемент скрытой формы прокладки, похоже, что это имеет смысл.
Это решение нуждается в дополнительном тестировании, но оно может удовлетворить ваши потребности.
<button>
и <input>
- два разных тега. Если вы хотите отправить свои значения кнопок, используйте тег <input>
.
Согласитесь с Vins, я бы использовал <input>
.
Есть ли конкретная причина, по которой вы используете <button>
вместо <input>
? Обычно я предпочитаю <button>
(позволяет добавлять значки и изображения), но я считаю, что существуют различия между браузерами относительно интерпретации значения...
Согласно w3schools Mozilla Developer Network, некоторые браузеры отправят атрибут value, в то время как другие браузеры, такие как IE7, неправильно отправят текст между тегами.
Попробуйте это, чтобы отправить кнопку в виде отправки, поймав скрытый ввод.
PHP:
<?php
if(isset($_POST['btname']))
echo $_POST['btname'];
}
?>
и html:
<form method="POST" action="" id="formname" name="formname">
<input name="btname" id="btname" type="hidden" />
<button onclick="document.formname.submit()" value="Submit">Send</button>
</form>
Сколько значений вы используете?
Я не уверен, что это звучит так, как будто ваша проблема решена. Одна вещь, о которой не упоминалось, заключается в том, что вы можете превысить свой предел php max_input_vars.
Php молчит, когда вы превысите этот предел, поэтому вам нужно будет проверить журнал предупреждений или проверить его так:
1.
Подсчитайте значения массива POST. Scripting в var_dump($_POST);
(в безопасной среде песочницы) будет делать это лучше всего, так как вы можете посмотреть окончательный вывод значения, чтобы увидеть, где массив POST "отключается".
2.
Затем запустите script для вывода информации php с помощью функции: phpinfo()
. Проверьте значение "max_input_vars".
3. Если значение массива POST = значение "max_input_vars", вы превысили лимит.
В вашем случае может быть, что вход для отправки был бы включен позже в POST.
Чтобы отредактировать значение (до 5000 в этом примере) в php.ini, добавьте или отредактируйте эту строку: max_input_vars = 5000