JQuery Mobile Linked Listview 无法正常工作?

Posted

技术标签:

【中文标题】JQuery Mobile Linked Listview 无法正常工作?【英文标题】:JQuery Mobile Linked Listview not working properly? 【发布时间】:2018-04-22 15:24:58 【问题描述】:

所以,我正在使用 JQuery Mobile 制作移动电子商务应用程序,但遇到了以下问题。

登录后,应用程序会将用户带到商店区域,该商店区域包含一个填充有 JSON 数据的链接列表视图。现在,当商店页面第一次初始化时,链接不起作用,但是当我刷新页面时,它们工作得很好。有谁知道我为什么会出现这种行为?

注意:我使用的是多页模板,从#store 页面导航到#product 页面。

这里是我为此使用的 javascript

$(document).on("pagebeforecreate","#store", function() 
    getProducts('',
      function(data)
          let products = data.products;
          storeProducts(products);
          $(".product-list").html('');
          $.each(products, function(i, item)
            $(".product-list").append(`
              <li>
                <a href="#product" data-index="$item.prod_id">
                  <img src="$item.picture" >
                  <h2>$item.prod_name</h2>
                  <p>$item.prod_desc</p>
                  <small>Price: <strong>€$item.unit_price</strong></small>
                </a>
              </li>
              `).listview("refresh");
          );

        ,
        function(e)
          console.log(e);
        ,
        function(data)
          console.log('always');
      );
);

function getProducts(param, success, error, always)
  $.ajax(
    type:'GET',
    url:`./ajax/products-ajax.php?$param`,
    dataType: 'json',
    async:true
  ).done(function(data)
    success(data);
  ).fail(function(e)
    error(e);
  ).always(function(data)
    always('always');
  );

提前致谢。

更新:

你好解封器, 再次感谢您的回答。控制台日志中没有显示任何错误。我尝试关闭浏览器中的缓存,但仍然有同样的问题。让我看看我是否可以更好地解释我正在尝试做的事情。

我正在尝试使用 JQuery Mobile 作为前端和 PHP 作为后端来制作这个应用程序。我有一个带有链接的 index.php,可以让您登录或注册。假设您选择登录选项,这将带您进入 login.php,其中有一个表单,当您提交它时,它会向服务器发出 ajax 请求以进行身份​​验证。假设响应成功,这会将您重定向到 listview 所在的 store.php。正如我之前所说,当您在登录后进入 store.php 时,列表视图中的链接不起作用,但是如果您刷新页面,则按预期工作。

【问题讨论】:

认为这就是正在发生的事情。登录后,我使用 $.mobile.changePage("store.php") 以编程方式将用户重定向到 store.php。但是,当我这样做时,Jquery mobile 会将此页面加载到 DOM 中已经存在的页面之上(Ajax 导航)。这在我的情况下是不需要的,因为我在此页面中有一些 PHP 脚本用于身份验证。我尝试使用 $.mobile.ajaxEnabled=false;防止 ajax 这样做,但仍然这样做。 【参考方案1】:

这是导致问题的原因:

在身份验证后将用户重定向到 store.php 时,JQuery Mobile 的 Ajax 导航会抓取我在其中的第一页(store.php 是多页的,包含#store 和 #product)并将其注入到已经存在的页面之上在 DOM 中。当然,当我单击链接时,这些链接不起作用,因为 DOM 中没有 id = "product" 的页面容器。当我刷新页面时,JQuery mobile 向服务器发出了一个 http 请求,这次获取了包含 #store 和 #product 页面的完整 store.php,因此链接将按预期工作。

我的解决方案:将#store 和#product 作为外部页面。通过将它们分开并将它们称为外部页面,我避免了 Ajax 导航的这个问题。

【讨论】:

以上是关于JQuery Mobile Linked Listview 无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

Jquery Mobile列表

JQuery Mobile 中的水平布局

jquery mobile中的listview搜索

jQuery Mobile 引号内引号内引号

Gridview 行命令事件未使用 jquery mobile 触发

jquery mobile JS与缓存的问题