Я использую 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>
ОБНОВИТЬ:
То же самое происходит с 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>
В.С.
<button name="Search" value="Advanced" type="submit">Search</button>
В этом примере ваши данные POST будут иметь пару ключевых значений:
Поиск Простой
или
Поиск Расширенный
И затем, основываясь на этом значении 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. var_dump($_POST);
в var_dump($_POST);
(в безопасной среде с песочницей) будет делать это лучше всего, так как вы можете посмотреть окончательный вывод значения, чтобы увидеть, где «POST» «отключается».
2. Затем запустите скрипт для вывода информации php с помощью функции: phpinfo()
. Проверьте значение «max_input_vars».
3. Если счетчик POST-массива = значение «max_input_vars», вы превысили лимит.
В вашем случае это может быть так, что вход для отправки был бы включен позже в POST.
Чтобы изменить значение (до 5000 в этом примере) в php.ini, добавьте или отредактируйте эту строку: max_input_vars = 5000