Есть jQuery огонь Ajax запрос, когда при нажатии кнопки Назад


У меня есть страница с 80 + динамически генерируемыми полями ввода, когда пользователь отправляет форму другому .php страница и один из входов содержит значение, которое не является числовым, он будет отправлять их обратно на страницу входов с помощью: <?php header("Location: javascript:history.back()"); ?>, в то же время он регистрирует ошибку в переменной сеанса. Причина, по которой я использую javascript:история.back (), это потому,что он хранит значения, которые были в форме, даже при нажатии кнопки back. Но поскольку это кэширование страницы, я не могу вывести ошибка в том же .php скрипт, поэтому я добавил элемент A и немного кода Ajax. Код Ajax извлекает другой файл, называемый error.php, это содержит:

<?php
header("Cache-Control: no-cache"); 
session_start();
if(isset($_SESSION['error'])) 
{
    echo $_SESSION['error'];
    unset($_SESSION['error']);
}
?>

Это извлекается, когда страница загружается сама по себе, но не когда используется history.back(), Похоже, что следующее не срабатывает:

<script type="text/JavaScript"> 
 $(document).ready(function(){ 
     $("#error p").load("error.php"); 
 });
 </script>

Есть идеи?

Спасибо,
Джастин

2 2

2 ответа:

Вы можете полностью отказаться от отправки формы и отправить данные с помощью вызова AJAX - сервер может проверить данные и отправить обратно либо "success", либо список ошибок проверки.

В случае успеха перейдите к следующему URL-адресу (возможно, указанному рядом с сообщением об успехе)

Если не удалось, измените текущую страницу, чтобы указать, в чем были проблемы. Это позволяет избежать необходимости повторного создания всей формы (поскольку вы никогда не покидаете страницу), но также обеспечивает надежную серверную часть проверка

Использование header("Location: javascript:history.back()") обычно не рекомендуется.

Используйте абсолютный путь, т. е.

header('Location: /forms/input.php');