Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于重定向的PHP头,浏览器在下面的情况下中止它_Php_Ajax - Fatal编程技术网

关于重定向的PHP头,浏览器在下面的情况下中止它

关于重定向的PHP头,浏览器在下面的情况下中止它,php,ajax,Php,Ajax,我有一个函数,在这个函数中,我们使用ajax调用请求一个服务和一个php文件。在其中,我有一个PHP函数,它从数据库中读取数据并将其发送回数据库,以防在获取数据时出现故障,我使用头将数据重定向到错误文件 在我的本地机器上,即使使用http/https请求,所有这些都可以正常工作。但在一个特定的服务器上,它的所有配置设置都与我的本地服务器相同,它的头请求被中止,重定向失败 我想知道什么事情可能导致这种情况 Ajax调用: $.ajax({ url: 'getdataForUser.php'

我有一个函数,在这个函数中,我们使用ajax调用请求一个服务和一个php文件。在其中,我有一个PHP函数,它从数据库中读取数据并将其发送回数据库,以防在获取数据时出现故障,我使用头将数据重定向到错误文件

在我的本地机器上,即使使用http/https请求,所有这些都可以正常工作。但在一个特定的服务器上,它的所有配置设置都与我的本地服务器相同,它的头请求被中止,重定向失败

我想知道什么事情可能导致这种情况

Ajax调用:

$.ajax({
    url: 'getdataForUser.php',
    type: 'POST',
    data: { 'User' : userName
            },
    dataType: 'html',                         
    success: function (data) {
        console.log(data);                                                      
     },
    error : function() {
        console.log('call error .');

    }
}); 
PHP函数:getdataForUser.PHP

<?php
    session_start();
    if(isset($_POST))
    {
        $transaction = array('User' => $_POST['User']
                         );
    }
    $result = $client->__soapCall("GetUserDetails",array($transaction));
    if($result == FALSE)
    {
        header( 'Location: error.php' ); // THIS REDIRECTION IS BEING ABORTED
        die();
    }
    print_r($result);

?>

不看代码就帮不了你什么忙。请尝试下面提到的方法:

$page = $_SERVER['REQUEST_URI'];
echo '<script type="text/javascript">';
echo 'window.location.href="'.$page.'";';
echo '</script>';

请记住,在发送任何实际输出之前,都必须调用header,无论是通过普通的HTML标记、文件中的空行还是通过PHP。

如果使用ajax,则必须用js处理来自服务器的响应,ajax不接受来自服务器的header

比如说 JS:

$.ajax{ url:'getdataForUser.php', 键入:“POST”, 数据:{“用户”:用户名 }, 数据类型:“JSON”, 成功:函数数据{ ifdata.status==“错误”{ window.location.href=data.url; } }, 错误:函数{ 控制台。记录“呼叫错误”; }
}; 在ajax调用中,如果没有看到一些代码重定向头,您就无能为力吗?这样行吗?oo至少向我们展示一些代码以查看您所做的操作。通常,本地浏览器会取消HTTP操作,如停止请求图像,因为SRC属性已更改。如果不知道您的服务是什么或如何调用它,我们就无法提供更多。更新的代码片段。请看一看。欢迎所有建议:谢谢回复。但它在我的本地机器上运行良好。为什么行为会改变?要考虑什么事情?因为首先我觉得是证书问题。但这并不是我深入研究这个问题的时候。不知道为什么它能在你的本地机器上工作,但上面的说法是正确的。您必须返回带有成功、失败或错误标志的url,然后在javascript中执行重定向。因为终端浏览器客户端从未实际看到ajax调用的页面,所以重定向从未命中客户端浏览器。Ok。我也要试试。n会回复你的!:谢谢