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