PHP AJAX 12017 调用标头(位置:)时出错 [重复]

Posted

技术标签:

【中文标题】PHP AJAX 12017 调用标头(位置:)时出错 [重复]【英文标题】:PHP AJAX 12017 Error when calling Header(Location:) [duplicate] 【发布时间】:2013-02-01 17:22:39 【问题描述】:

我有一个通过 AJAX 调用 php 文件的 jquery 函数。在那个 PHP 文件里面我有

 header('Location: http://www.google.com');

但是这不起作用,页面没有重定向,jQuery AJAX调用返回错误,没有12017,我找不到关于这个错误号的太多信息。

我启用了输出缓冲,并尝试将标头调用放在我的 PHP 文件的顶部,但仍然没有运气。有任何想法吗?谢谢。

【问题讨论】:

为什么要通过 AJAX 返回重定向?你想做什么? 如果您在浏览器中查看页面。 (没有 AJAX)重定向是否有效? @Alexander:ajax 函数将表单发布到处理表单的 PHP 函数,如果表单被成功处理,则页面应该重定向,如果不成功,则通过ajax 成功回调,我在那里处理错误。 @hek2mgl 我明天试试这个看看 相信你可以在这里找到答案:How to manage a redirect request after a jQuery Ajax call 【参考方案1】:

我相信如果您使用 ajax 请求,您必须在 javascript(发出请求的地方)内处理重定向。

如果您的 php 脚本在您发出 ajax 请求时设置响应的 Location 标头,它将尝试重定向 ajax 请求而不是浏览器中显示的页面。

您可以尝试处理发出请求的错误(如果我看到发出请求的代码,我会更具体)。

您可以尝试更改您的脚本,使其返回某种状态代码,然后使用 js/jquery 处理此状态并在那里进行重定向:

document.location=' *new url to redirect the browser to* '

【讨论】:

我已经通过 JSON 返回所需的 URL 并使用 jQuery 处理它来工作。谢谢。

以上是关于PHP AJAX 12017 调用标头(位置:)时出错 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在进行 ajax 调用时在 HTTP 标头中包含 JWT

在 Ajax 调用期间获取标头值

拒绝使用 ajax 调用 Rest 服务器设置不安全的标头“Cookie”

jQuery AJAX POST 在第一次调用时跳过 Django CSRF 令牌标头

在向外部服务器发送 ajax 调用时,Access-Control-Allow-Headers 在预检响应中不允许请求标头字段授权 [重复]

为啥添加额外的标头会导致 AJAX 调用失败