【问题标题】:php redirection headers not sent through ajax callphp重定向标头未通过ajax调用发送
【发布时间】:2012-02-05 12:48:50
【问题描述】:

我正在尝试从使用 ajax 调用的 php 文件发送标头。问题是,当我使用 php 验证所有信息时,我想重定向到另一个页面,但标题不起作用!有什么想法吗?

代码的作用:

//------------- index.php
on click of input, function passes <input> values through $_POST to login.php
if($_SESSION[superman]==true){redirects to index_main.php}

//------------- login.php
all it does is validate forms and if login and password are correct, it sets $_SESSION [superman]=true

【问题讨论】:

  • 好吧,我们将 ajax 调用到验证表单的外部文件中,然后如果每一个都正确,它会使用标头重定向。标头不起作用(即使我将它们放入主文件中,从那里发送 ajax 函数)

标签: php javascript ajax header callback


【解决方案1】:

重定向只会重定向Ajax 调用!如果要更改浏览器中显示的页面,则需要在 Ajax 调用完成后使用 Javascript 进行重定向。

  • 让您的 Ajax 调用返回一个指示成功登录的值(例如字符串 true 或您要加载的页面的 URL)
  • 检查 Ajax 调用的返回值。如果成功,请使用 Javascript 更改 location.href。

【讨论】:

  • vakstrom 好的,所以在 login.php 中我们制作 并在主文件中, if(vaka==true){ location.href}.. ?还是我们需要通过一个 ajax 调用来回调主文件?
  • @semur 这取决于您如何解析响应。
  • 看起来像这样:ajba.open("POST","php_reg/login.php?login_login="+str1+"&login_password="+str2,true);是请求 login.php 验证表单,如果一切正常,$_SESSION[redir_main]=true; ELSE 回显“错误”;做出响应的主文件查看是否设置了会话并使用标头重定向。它可以工作,但只有在我提交值和 REFRESH 之后(然后 php 意识到有一个会话已注册,并重定向)。我真的不知道该怎么解释...
  • 您需要监控通话的readyState,通话完成后检查responseText。请参阅此页面上的教程:tizag.com/ajaxTutorial/ajaxxmlhttprequest.php
猜你喜欢
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
  • 2020-11-12
  • 1970-01-01
  • 2017-02-24
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多