PHP header() 和 jquery mobile

Posted

技术标签:

【中文标题】PHP header() 和 jquery mobile【英文标题】:PHP header() and jquery mobile 【发布时间】:2011-12-06 16:22:31 【问题描述】:

我想使用 php header('Location: newpage.php') 来重定向。

我没有收到任何错误,但 Jquery mobile 似乎无法加载目标页面,并且地址栏仍使用旧地址。

你有什么建议吗?

谢谢!

【问题讨论】:

如果 php 的 header() 没有重定向,是什么让你认为 jQuery mobile 是罪魁祸首?你的代码有链接吗? 确定已修复。我的 header('') 指令没有错误。问题来了。实际上,我在从带有 post 方法的 FORM 中接收到由页面本身提交的元素后尝试了此标头。我将 data-ajax="false" 放入 FORM 的属性中,它解决了这个问题。谢谢大家 【参考方案1】:

在调用该页面时尝试添加data-ajax="false",然后再使用php header()进行重定向

【讨论】:

跟ajax没关系。 php 标头位置应在任何 html 之前调用。 你是对的 Cymbals 但感谢 Wenkhairu,我记得我曾经在 jquery 移动网站的所有 FORM 上都放了 data-ajax="false",我只是忘了放这个。 .. 实际上确实如此,因为 jQM 将所有 调用更改为 XHR,然后解析响应。这意味着它取决于您的导航器的行为。但从那以后,2014 年现在看起来一切都很好:)【参考方案2】:

该代码向用户的浏览器发送一个 302 重定向标头,指示它重定向到提供的 URL。它应该工作。你检查过语法吗?信息在这里:http://www.php.net/manual/en/function.header.php

【讨论】:

【参考方案3】:

我一直在结合 JQuery Mobile 做一个 header('Location: newpage.php') 并且它没有问题。

我怀疑您在加载任何 html 后尝试发送标头,这将不起作用。 php 标头必须出现在任何输出之前,包括 html、JQuery Mobile 等。

【讨论】:

【参考方案4】:

我在 Node.js + JQM 上遇到了同样的问题,wenkhairu 给出的答案修复了它。 问题是 JQM 劫持导航行为并使用 ajax 进行导航,如果您将 data-ajax=false 设置为 wenkhairu 建议您告诉 JQM 不要劫持此表单的导航并使用常规链接/提交行为

【讨论】:

【参考方案5】:

尝试开启错误报告:

ini_set('error_reporting', E_ALL);
ini_set("display_errors","1"); 

【讨论】:

以上是关于PHP header() 和 jquery mobile的主要内容,如果未能解决你的问题,请参考以下文章

如何创建使用在 iPhone 和模拟器中运行的 Jquery mob/Sencha touch 开发的应用程序

jQuery - 没有访问控制允许来源

jquery中ajax跨域设置http header

js 面向对象 jquery 全局变量 封装

包含的 php 文件中的 jQuery 选择器不起作用

php+jquery聊天