PHP中的Header()不起作用


header() in php is not working

我是非常新的PHP,请不要把这个问题标记为重复,因为我已经在stackoverflow以及其他网站上搜索并找到了许多解决方案,这里是我的login.php中的代码我要做的是传递一些数据到controller.php:

 window.onload = function(){
$('#btnLogin').click(function() {
var val1 = $('#txtusername').val();
var val2 = $('#txtpassword').val();
var val3 = "login";
$.ajax({
    type: 'POST',
    url: 'controller.php',
    data: { action: val3, username: val1, password: val2 },
    success: function(response) {
    alert(response);    
    }
});
});
}  

它工作得很好,如果我不想导航到另一个页面"index.php",因为在controller.php我已经收到了从login.php传递的所有数据,但头("Location: index.php")不工作。下面是我的controller.php:

<?php
header("Location: index.php");
exit();
?>    

我尝试了一些解决方案,如:"删除空格",添加"error_reporting(E_ALL)"answers"ini_set('display_errors', 'On')"answers"ob_start()"放到controller.php文件的顶部,但是没有更好的结果。

您不能通过ajax请求做到这一点。如果你想在通过controller.php处理完数据后导航到index.php,在你的成功响应中使用jquery重定向。

success: function(response) {
    window.location.replace("index.php");   
}

您正在ajax请求中进行重定向。这不会重定向您的页面,它只会重定向ajax请求。相反,返回一些json响应,并在ajax回调中检查此响应,然后使用javascript重定向用户。