【发布时间】:2013-07-16 23:23:47
【问题描述】:
假设我在一个 jQuery Mobile 网站中有 2 个页面。
Page1 - 使用内联 PHP 显示来自数据库的数据。
Page2 - 将新数据插入数据库。
问题是page1在返回时没有更新,在page2向数据库添加了一些东西之后。我可以通过按 F5 来更新它,但是如何使用 jQuery 实现相同的更新?
【问题讨论】:
标签: php jquery jquery-mobile mobile refresh
假设我在一个 jQuery Mobile 网站中有 2 个页面。
Page1 - 使用内联 PHP 显示来自数据库的数据。
Page2 - 将新数据插入数据库。
问题是page1在返回时没有更新,在page2向数据库添加了一些东西之后。我可以通过按 F5 来更新它,但是如何使用 jQuery 实现相同的更新?
【问题讨论】:
标签: php jquery jquery-mobile mobile refresh
我认为您正在使用 pageinit 事件在第 1 页中显示数据。这只会触发一次,并且不会在您每次添加新数据时更新您的数据。
您需要使用第 1 页的pagebeforeshow 事件从数据库中获取数据。这样,每次都会带来新的数据,这正是您所需要的。这是一个语法:
$(document).on("pagebeforeshow", "#page1", function() {
//call to server
});
如果您没有使用pageinit,则必须使用document.ready 事件来获取数据。嗯,就是这样做的。您不能将ready 与 jquery mobile 一起使用。 DOM ready 将初始化整个文档,这将使 jQM 的 ajax 页面更改功能变得毫无意义和无用。
【讨论】:
昨晚很晚,我错过了我应该使用 Ajax 获取内联 php 内容。
所以我就是这样解决的:
在页面底部添加一个 Ajax 调用来加载 PHP 文件,如下所示:
$(document).on('pagebeforeshow', function(){
$.ajax({
type: "GET",
url: "includes/db/ajax_show_php_content.php",
success: function(html) {
$("#page1").html(html); //Insert PHP content
$("#page1").trigger('create'); //Apply jQuery Mobile style to it.
});
});
感谢@hungerpain 和@anglinb 帮助解决这个问题。
【讨论】:
我对 jQuery Moblie 不是很熟悉,但我发现了以下内容:
function refreshPage()
{
jQuery.mobile.changePage(window.location.href, {
allowSamePageTransition: true,
transition: 'none',
reloadPage: true
});
}
我认为将 reloadPage 设置为 true 应该可以解决问题。
如果这不起作用,请查看此答案:jQuery Mobile Page refresh mechanism
希望这会有所帮助!
【讨论】: