Json jquerymobile和ajax加载

Json jquerymobile和ajax加载,json,jquery,listview,jquery-mobile,Json,Jquery,Listview,Jquery Mobile,好吧,一段时间以来,我一直在为这个问题绞尽脑汁,我在网上尝试了大量的解决方案,但都没有奏效 我需要的是在页面加载时将json中的数据馈送到listview并显示它,但它只在索引上工作,然后我需要重新加载每个页面,以便可以看到listview 以下是我的jquery代码: $(document).bind("mobileinit", function () { $.mobile.ajaxEnabled = false; });

好吧,一段时间以来,我一直在为这个问题绞尽脑汁,我在网上尝试了大量的解决方案,但都没有奏效

我需要的是在页面加载时将json中的数据馈送到listview并显示它,但它只在索引上工作,然后我需要重新加载每个页面,以便可以看到listview

以下是我的jquery代码:

$(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似乎没有被调用,但在重新加载之后。