Json jquerymobile和ajax加载
好吧,一段时间以来,我一直在为这个问题绞尽脑汁,我在网上尝试了大量的解决方案,但都没有奏效 我需要的是在页面加载时将json中的数据馈送到listview并显示它,但它只在索引上工作,然后我需要重新加载每个页面,以便可以看到listview 以下是我的jquery代码:Json jquerymobile和ajax加载,json,jquery,listview,jquery-mobile,Json,Jquery,Listview,Jquery Mobile,好吧,一段时间以来,我一直在为这个问题绞尽脑汁,我在网上尝试了大量的解决方案,但都没有奏效 我需要的是在页面加载时将json中的数据馈送到listview并显示它,但它只在索引上工作,然后我需要重新加载每个页面,以便可以看到listview 以下是我的jquery代码: $(document).bind("mobileinit", function () { $.mobile.ajaxEnabled = false; });
$(document).bind("mobileinit", function () {
$.mobile.ajaxEnabled = false;
});
$(document).bind('pageinit',function() {
DrawPageContent();
});
function DrawPageContent() {
$.ajax({
dataType: "json",
url: "js/categorias.json",
success: function(msg){
console.log(msg.categorias[1].nombre);
var categos = '';
for(var i=0;i<msg.categorias.length;i++){
categos += '<li><a href="refrescos.html?id='+ 0 +'"><img src="'
+ msg.categorias[i].logo + '"><h2>'+msg.categorias[i].nombre
+ '</h2><p>' + msg.categorias[i].desc + '</p></a></li> ';
}
$("#categorias").html(categos);
$("#categorias").listview("refresh");
//$("#page").trigger("pagecreate");
}
});}
我还尝试了$document.ready和其他一些东西
以下是该部分的HTML:
<div id="page" data-role="page">
<div data-role="header">
<h1>Categorias</h1>
<a href="#popupOpciones" data-rel="popup" data-position-to="window" data-role="button" data-inline="true" data-icon="gear" data-theme="b" data-transition="pop">Opciones</a>
</div>
<div data-role="content">
<ul id="categorias" data-role="listview" data-inset="true">
</ul>
有什么办法解决这个问题吗?如果每次都试图附加到id类别,这就是为什么它只附加到第一页 在jQueryMobile中,加载的页面实际上不会立即从DOM中删除。这意味着,如果加载多个包含id为categorias的and元素的页面,那么最终会出现多个DOM元素,其中categorias标识这些元素。在本例中,它将只附加到第一个页面,这将解释为什么在刷新并从DOM中删除其他页面之前,它不会显示在其他页面上 这里一个好的解决方案是给每个页面一个唯一的标识符,然后使用
$("#categorias", "#pageidentifier");
此选择器将在您指定的特定页面中搜索,以查找您的categorias元素。您正在此处加载pageinit上的数据,该数据只触发一次。我的计划是确保ajax在页面完成之前不会开始加载。为什么不使用pagecreate、pagebeforeshow或pageshow?我会尝试一下,然后向他们报告,thx提示。我已经尝试了所有3个none似乎都不起作用=因为根据用户点击的是我加载的json,我制作了各种HTML,每个HTML都有一个唯一的listview id和页面id,所有HTML都遵循与上面相同的格式,但是,一旦我转到下一个html,我必须重新加载才能看到listview。@Jadager在其他页面的其他列表视图中使用了相同的id吗?@Jadager以类似的方式:您是从外部源加载页面吗?或者在程序中使用html字符串并附加到页面容器中?他使用的是Ajax/JSON数据。但只要成功获得数据,这就不是问题所在。顺便说一句,为了基于父对象的选择器,不要在它们之间添加逗号,即foo-bar u-target-bar在foo中。不,每个列表视图都有自己的id,我注意到ajax似乎没有被调用,但在重新加载之后。