Я использую ajax для вставки данных. после регистрации в случае успеха он перенаправит его на страницу реестра или registry.php. Но кажется, что он не перенаправляется на соответствующую страницу, и странно, когда я проверяю его на консоли на firefox, кажется, что он дает правильный результат, что-то вроде этого POST xxxx / form_zuri / insertData.php 302 Найдено 50ms и GET xxxx / form_zuri / registry.php 302 Найдено 37ms.
heres код для insertData.php
if($data = $admin->insertRegistrantInfo($fname, $lname, $aname, $email, $password) == true) { session_regenerate_id(true);// destroying the old session id and creating a new one $_SESSION['id'] = $data; header('location: registry.php'); exit();
heres my ajax script:
$("#submit_third").click(function(){ $.ajax({ type: "POST", url: "insertData.php", data: { fname : $("#fname").val(), lname : $("#lname").val(), aname : $("#aname").val(), email : $("#email").val(), password : $("#password").val() }, cache: false, success: function(data) { //window.location.replace('registry.php') ; } }); //window.location.replace('registry.php') ; //return false; });
если я буду использовать функцию .replace js, она не сможет получить идентификатор SESSION.
любая идея?
Когда вы вызываете PHP-скрипт в AJAX, запрос выполняется с помощью вызова AJAX, а не с текущей страницы, на которой находится клиент, поэтому он не будет изменять заголовки на странице, которая фактически просматривается, – только на основе ответа вызов AJAX. Что в этом случае не будет делать то, что вы хотите.
Кроме того, вы не можете изменить заголовки, когда контент уже выведен, что снова в вашем случае это было бы.
Если вы используете window.location.href = 'registry.php'
в обратном вызове AJAX, там должен быть идентификатор сеанса. Использование window.location.replace
не добавит новую запись в вашу историю.
Вы не можете перенаправлять таким образом в php-файле. Вам нужно установить любую переменную в ответ, и в вашем окне успеха ajax вы можете сохранить чек, если это конкретное значение будет перенаправлено на вашу страницу с помощью JQuery.
И я не думаю, что это делает какие-либо проблемы на СЕССИИ, вам нужно будет вызвать session_start () в заголовке вашей страницы.
Другой подход будет заключаться в создании другого идентификатора сеанса, например $ _SESSION ["прошло"] = true; то после успешной вставки ваших данных вы можете обновить свою текущую страницу и по-прежнему использовать метод заголовка.
PHP-код
if (isset($_SESSION["passed"])){ if ($_SESSION["passed"]) header('location: registry.php'); }
на стороне javascript вы можете перезагрузить после успешного запроса
location.reload();