假设我在 jQuery Mobile 网站中有 2 个页面。
Page1 - 使用内联 PHP 显示来自数据库的数据。
Page2 - 将新数据插入数据库。
问题是 page1 在返回时没有更新,在 page2 向数据库添加了一些东西之后。我可以通过按 F5 来更新它,但是如何使用 jQuery 实现相同的更新?
假设我在 jQuery Mobile 网站中有 2 个页面。
Page1 - 使用内联 PHP 显示来自数据库的数据。
Page2 - 将新数据插入数据库。
问题是 page1 在返回时没有更新,在 page2 向数据库添加了一些东西之后。我可以通过按 F5 来更新它,但是如何使用 jQuery 实现相同的更新?
我认为您正在使用该pageinit
事件在第 1 页中显示数据。这只会触发一次,并且不会在您每次添加新数据时更新您的数据。
您需要使用pagebeforeshow
第 1 页的事件从数据库中获取数据。这样,每次都会带来新的数据,这正是您所需要的。这是一个语法:
$(document).on("pagebeforeshow", "#page1", function() {
//call to server
});
如果您不使用pageinit
,则必须使用document.ready
事件来获取数据。嗯,就是这样做的。您不能ready
与 jquery mobile 一起使用。DOMready
将初始化整个文档,这将使ajax
jQM 的页面更改功能变得毫无意义和无用。
昨晚很晚,我错过了我应该使用 Ajax 获取我的内联 php 内容。
所以这就是我解决它的方法:
在加载 PHP 文件的页面底部添加一个 Ajax 调用,如下所示:
$(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
希望这可以帮助!