PHP перенаправление не работает, когда кнопка отправки отключена - PullRequest
0 голосов
/ 27 мая 2011

На моей странице index.php у меня есть кнопка отправки, которая берет данные формы и отправляет их через POST на страницу update.php.На этой новой странице база данных обрабатывается, а затем перенаправляет (с помощью PHP) обратно на исходную страницу.Этот процесс перенаправления работает нормально в Firefox, но, похоже, не работает в Chrome / IE.

Соответствующий код в файле index.php:

<form name="battle" action="update.php" method="post">
<input type="radio" name="update" value="<?php print($names[0] . "+" . $names[1]); ?>" />
<input type="radio" name="update" value="<?php print($names[1] . "+" . $names[0]); ?>" />
<input type="submit" name="submit" value="Submit" />
</form>

Это код в концемой файл update.php:

$con->close();
session_write_close();
header("Status: 200");
header( "Location: index.php" );
exit(0);

Этот код будет работать во всех браузерах, если кнопка отправки НЕ отключена при клике, но мне действительно нужно этоособенность.Кто-нибудь знает, как заставить это перенаправление работать, пока еще есть кнопка отключения fetaure?

Ответы [ 3 ]

1 голос
/ 27 мая 2011

Отключение кнопок отправки на отправке форм может быть непростым делом.Это сработало для меня:

Примечание: Требуется> = jQuery1.6 для работы

test.php:

<script type="text/javascript">
$(document).ready(function ()
{
    $("form").submit(function ()
    {
        $("input[type='submit']").prop("disabled", true);
    })
})
</script>

<form name="battle" action="update.php" method="post">
    <input type="radio" name="update" value="foo" />
    <input type="radio" name="update" value="bar" />
    <input type="submit" name="submit" value="Submit" />
</form>

update.php:

header("Status: 200");
header( "Location: index.php" );
exit(0);

?>
1 голос
/ 27 мая 2011

Я предполагаю, что вы отключаете кнопку отправки с помощью JavaScript, чтобы предотвратить несколько отправок. Если вы делаете это, устанавливая отключенное свойство кнопки отправки, то это не лучший способ сделать это, поскольку он может иметь побочные эффекты.

Если вы хотите запретить многократную отправку с помощью javascript, лучший способ сделать это - прикрепить обработчик события к событию отправки формы, которое возвращает true только при первом запуске события отправки.

function submitHandler ()
{
    if (typeof submitHandler.triggered == 'undefined')
    {
        submitHandler.triggered = true;
        return true;
    }
    else
    {
        return false;
    }
}

Прикрепите вышеуказанное к событию отправки формы. Это должно предотвратить многократные отправки, а также избежать проблем, которые может вызвать отключение кнопки отправки.

0 голосов
/ 27 мая 2011

У меня недавно была та же проблема, и вот что я сделал, чтобы исправить ее во всех браузерах

$(document).ready(function () {
     $("input[type='submit']").click(function () {
         $(this).attr('disabled','true');
         // validate data
         ...

         // when data is valid send form else enable form
         $('form[name="battle"]').submit();
      })

 });

теперь данные вашей формы будут отправлены в любом браузере. попробуйте и дайте мне знать, как это происходит:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...