0

假设我在 jQuery Mobile 网站中有 2 个页面。

Page1 - 使用内联 PHP 显示来自数据库的数据。

Page2 - 将新数据插入数据库。

问题是 page1 在返回时没有更新,在 page2 向数据库添加了一些东西之后。我可以通过按 F5 来更新它,但是如何使用 jQuery 实现相同的更新?

4

3 回答 3

1

我认为您正在使用该pageinit事件在第 1 页中显示数据。这只会触发一次,并且不会在您每次添加新数据时更新您的数据。

您需要使用pagebeforeshow第 1 页的事件从数据库中获取数据。这样,每次都会带来新的数据,这正是您所需要的。这是一个语法:

 $(document).on("pagebeforeshow", "#page1", function() {
      //call to server
 });

如果您不使用pageinit,则必须使用document.ready事件来获取数据。嗯,就是这样做的。您不能ready与 jquery mobile 一起使用。DOMready将初始化整个文档,这将使ajaxjQM 的页面更改功能变得毫无意义和无用。

于 2013-07-17T01:27:17.570 回答
1

昨晚很晚,我错过了我应该使用 Ajax 获取我的内联 php 内容。

所以这就是我解决它的方法:

  1. 使用 PHP 在单独的文件中移动了包含动态内容的所有内容。
  2. 在加载 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 帮助解决这个问题。

于 2013-07-17T10:15:55.077 回答
0

我对 jQuery Moblie 不是很熟悉,但这是我发现的:

function refreshPage()
{
   jQuery.mobile.changePage(window.location.href, {
        allowSamePageTransition: true,
        transition: 'none',
        reloadPage: true
    });
}

我认为将 reloadPage 设置为 true 应该可以解决问题。

如果这不起作用,请查看以下答案:jQuery Mobile Page refresh mechanism

希望这可以帮助!

于 2013-07-17T00:16:09.747 回答