PHP header () не перенаправляет после вызова ajax

Я использую 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();