【发布时间】: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}" alt="">
<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 这样做,但仍然这样做。
标签: jquery-mobile