Значение HTML-формы кнопки не размещено в Safari и Chrome

Я использую 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() – без этого, он представляет штраф с помощью кнопки или ввода.

Solutions Collecting From Web of "Значение HTML-формы кнопки не размещено в Safari и Chrome"

Дайте ему имя.

 <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