标头(位置:)通过AJAX未重定向
header(Location:) via AJAX not redirecting
首先,让我说,我知道这似乎不是一个罕见的问题。我不打算在这些论坛上塞满已经回答过的问题,但是,我已经处理了大约30多个类似问题的线程,但一直无法找到解决方案。
对我的问题的简短描述是:我试图在使用php的header(location:)函数提交表单后重定向,但它没有重定向。这有点复杂,因为表单是通过AJAX提交的。我的代码经过的步骤如下:
用户提交表单>通过AJAX发送的表单数据>表单处理页面验证数据>如果有效,表单处理页面将数据插入数据库>如果提交成功,表单处理页将重定向URL添加到$_SESSION>表单处理页返回一个"重定向"变量>javascript/AAJAX检查重定向变量,并刷新页面(如果找到)>页头检查$_SESSION的重定向URL,如果找到,则设置适当的页头并退出。
我想我想问的第一件事是,这是正确的做法吗?在我看来,应该有一种更简单的方法来做这件事。显然,将重定向URL传递给javascript并执行window.location重定向要简单得多,但我读到在服务器端处理它会更好/更安全,所以我正在尝试这样做。
假设我朝着正确的方向去做,这里会出什么问题?我检查了前导和尾随空格、BOM字符,甚至尝试了输出缓冲,但仍然存在同样的问题。
表单提交时会发生的情况是,页面会刷新,但它会返回到原始表单页面,而不是重定向url。我打开了最详细的错误报告,没有任何错误。
有一件事可能感兴趣,也可能不感兴趣,我设置了一个error_log函数,在设置Location:标头后立即将所有标头记录到一个文件中。当我在AJAX之外重定向时(这是有效的),accept:header被设置为html,但当我尝试通过AJAX进行重定向时,accept-header被设为JSON。这会造成问题吗?
非常感谢您抽出时间,如果这是一个愚蠢的问题,请再次道歉。我已经使用这个论坛很多年了,从来没有在上面发布过问题,因为直到现在它总能解决我的问题。提前感谢!
PHP太慷慨了,不仅不能在代码中包含HTML代码,还不能在您的代码中包含JavaScript代码。我会解释一件事。当您通过ajax发送数据时,通常很难返回布尔数据(无论是真是假,取决于我们在服务器端使用php在我们的ajax方向上建立的一些文件中工作的条件)来给出最终答案。
另一方面,回到PHP的慷慨,当我们试图在服务器端和通过ajax验证数据时,我们可以自由地操作工作部分,以显示一些响应消息、重定向到页面上的某个位置或创建会话。不管怎样。
我的意思是,在您将使用AJAX的控制器部分,您可以设置不同的条件。也就是说,如果用户数据是正确的,那么你可以发送调用Javascript中的脚本,用location.reload()重定向他;并且还自动分配会话。如果用户没有正确的数据,那么我们应该做的是向退出AJAX返回一条警告消息或警报,通常它会在:之后
function (response) {
$ ('.answer').html(response);
}
请注意,例如,不需要$('.answer').html(response);返回一个答案,因为ajax只向服务器发送数据,如果有回复消息,则发送良好,如果没有。很多时候,我所做的是通过控制台发送消息,尽管这样做通常很方便,因为通常在几个条件下工作,这取决于我们的请求结果,我们将被迫在代码中的某个元素中显示一些响应。
我建议您在PHP中使用javascript,从而重定向到其他页面、分配会话或简单地返回消息。请记住,ajax请求不仅是异步的,而且是重复的,可以根据需要随时发送给调用方。事实上,您发送了ajax调用php文件并返回了答案,这并不意味着您可以在完成ajax请求后继续使用它。
这是做你想做的事情的正确方式,在客户端操作我们的服务器端代码通常更容易。问候。
- AJAX不会在文件上传后重定向到网页-POST方法
- 我尝试在登录脚本中使用ajax,但页面不会重定向
- 如何使用Ajax调用特定的控制器和操作来重定向用户
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- 如何在ajax重定向中传递create-formbuilder
- Rails:通过调用Ajax重定向
- 如何完成表单后使用 AJAX 重定向并在其他页面上显示数据
- Javascript/Ajax重定向问题
- 如何使用 AJAX 重定向到下一页
- 如何使用 ajax 重定向到另一个具有隐藏值的页面
- JSF 1.2 AJAX 重定向到 URL
- 登录到一个站点,而不使用 jQuery/ajax 重定向到该站点
- 使用php和ajax重定向到另一个页面
- jQuery.post()并通过ajax重定向
- Fancybox ajax重定向而不是显示弹出窗口
- 如果找不到主机,Ajax重定向
- php发布后AJAX重定向返回true或无错误
- 使用Ajax重定向到WEB-INF中的jsp文件
- jQuery/Ajax:重定向后如何在目标页面上调用函数
- 如何用jquery $.ajax重定向到一个页面