Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 难以在由多个xml文件提供服务的列表视图中加载多个图像_Javascript_Html_Jquery_Jquery Mobile - Fatal编程技术网

Javascript 难以在由多个xml文件提供服务的列表视图中加载多个图像

Javascript 难以在由多个xml文件提供服务的列表视图中加载多个图像,javascript,html,jquery,jquery-mobile,Javascript,Html,Jquery,Jquery Mobile,我正在为Android开发一个html应用程序,并尝试在列表视图中加载图像。特定于列表项的数据由多个xml文件提供。我正在使用ajax加载xml文件并填充列表项。我在这里面临的问题是有164个列表项。因此,需要加载164个图像和10个xml文件。我的加载器函数在两次迭代后耗尽。它确实读取xml文件,但无法在两次迭代后动态创建列表项并用图像填充它们。我相信这是由于堆栈的限制。我想不出其他的解决办法。如果有人能提出另一种解决方案,我们将不胜感激。下面是我的加载器函数。这是一个递归函数: functi

我正在为Android开发一个html应用程序,并尝试在列表视图中加载图像。特定于列表项的数据由多个xml文件提供。我正在使用ajax加载xml文件并填充列表项。我在这里面临的问题是有164个列表项。因此,需要加载164个图像和10个xml文件。我的加载器函数在两次迭代后耗尽。它确实读取xml文件,但无法在两次迭代后动态创建列表项并用图像填充它们。我相信这是由于堆栈的限制。我想不出其他的解决办法。如果有人能提出另一种解决方案,我们将不胜感激。下面是我的加载器函数。这是一个递归函数:

function loadChannels() {

        $.ajax({
            type: "GET",
            url: curURL,
            dataType: "xml",
            error: function(){ console.log('Error Loading Channel XML'); },
            success: function(nXml) {
                var noOfItems = parseInt($($(nXml).find('total_items')[0]).text(), 10);
                var startIdx = parseInt($($(nXml).find('item_startidx')[0]).text(), 10);

                var allItems = $(nXml).find('item');


                $(allItems).each(function() {
                    var obj = $("<li><span id='cont-thumb'></span><span id='cont-name'></span></li>");
                    $("#content-scroller ul").append($(obj));

                    var imgURL = $($(this).find('item_image')[0]).text();
                    var contThumb = $(obj).children()[0];
                    $(contThumb).css("background-image", 'url('+imgURL+')');
                    var name = $($(this).find('name')[0]).text();
                    var contName = $(obj).children()[1];
                    $(contName).text(name).css('text-align', 'center');
                    var url = $($(this).find('link')[0]).text();
                    $(obj).data('item_link', url);
                    $(obj).bind('click', onJPContSelected);                
                });

                if(startIdx+allItems.length < noOfItems){

                    var newIdx = new Number(startIdx+allItems.length);
                    var tokens = curURL.split("/");
                    tokens[tokens.length-2] = newIdx.toString(10);
                    curURL = "http:/";
                    for(var i=2; i<tokens.length; i++)
                        curURL = curURL + "/" + tokens[i];

                    loadChannels();
                }
            }
        });
    }
函数加载通道(){
$.ajax({
键入:“获取”,
url:curURL,
数据类型:“xml”,
错误:函数(){console.log('error Loading Channel XML');},
成功:函数(nXml){
var noOfItems=parseInt($($(nXml).find('total_items')[0]).text(),10);
var startIdx=parseInt($($(nXml).find('item_startIdx')[0]).text(),10);
var allItems=$(nXml).find('item');
$(所有项)。每个(函数(){
var obj=$(“
  • ”); $(“#内容滚动器ul”).append($(obj)); var imgURL=$($(this).find('item_image')[0]).text(); var contThumb=$(obj.children()[0]; css(“背景图像”,“url('+imgURL+')); var name=$($(this).find('name')[0]).text(); var contName=$(obj.children()[1]; $(contName).text(name).css('text-align','center'); var url=$($(this.find('link')[0]).text(); $(obj).data('item_link',url); $(obj).bind('click',onJPContSelected); }); 如果(startIdx+allItems.length对于(var i=2;i尝试使用外部循环删除递归-类似于:

    function loadChannels(){
        var stopFlag = false;
        // request the pages one after another till done
        while(!stopFlag) 
        {
            $.ajax({
                type: "GET",
                url: curURL,
                dataType: "xml",
                error: function(){ 
                    console.log('Error Loading Channel XML'); 
                    errorFlaf = true;
                },
                success: function(nXml) {
                    var noOfItems = parseInt($($(nXml).find('total_items')[0]).text(), 10);
                    var startIdx = parseInt($($(nXml).find('item_startidx')[0]).text(), 10);
                    var allItems = $(nXml).find('item');
                    $(allItems).each(function() {
                        var obj = $("<li><span id='cont-thumb'></span><span id='cont-name'></span></li>");
                        $("#content-scroller ul").append($(obj));
    
                        var imgURL = $($(this).find('item_image')[0]).text();
                        var contThumb = $(obj).children()[0];
                        $(contThumb).css("background-image", 'url('+imgURL+')');
                        var name = $($(this).find('name')[0]).text();
                        var contName = $(obj).children()[1];
                        $(contName).text(name).css('text-align', 'center');
                        var url = $($(this).find('link')[0]).text();
                        $(obj).data('item_link', url);
                        $(obj).bind('click', onJPContSelected);                
                    });
    
                    if(startIdx+allItems.length < noOfItems){
    
                        var newIdx = new Number(startIdx+allItems.length);
                        var tokens = curURL.split("/");
                        tokens[tokens.length-2] = newIdx.toString(10);
                        curURL = "http:/";
                        for(var i=2; i<tokens.length; i++)
                            curURL = curURL + "/" + tokens[i];
    
                        // lets disable the recursion
                        // loadChannels();
                    }
                    else {
                        stopFlag = true;
                    }
                }
            });        
        }
    }
    
    函数加载通道(){
    var stopfag=false;
    //要求一页接一页直到完成
    而(!stopFlag)
    {
    $.ajax({
    键入:“获取”,
    url:curURL,
    数据类型:“xml”,
    错误:函数(){
    log(“加载通道XML时出错”);
    errorFlaf=true;
    },
    成功:函数(nXml){
    var noOfItems=parseInt($($(nXml).find('total_items')[0]).text(),10);
    var startIdx=parseInt($($(nXml).find('item_startIdx')[0]).text(),10);
    var allItems=$(nXml).find('item');
    $(所有项)。每个(函数(){
    var obj=$(“
  • ”); $(“#内容滚动器ul”).append($(obj)); var imgURL=$($(this).find('item_image')[0]).text(); var contThumb=$(obj.children()[0]; css(“背景图像”,“url('+imgURL+')); var name=$($(this).find('name')[0]).text(); var contName=$(obj.children()[1]; $(contName).text(name).css('text-align','center'); var url=$($(this.find('link')[0]).text(); $(obj).data('item_link',url); $(obj).bind('click',onJPContSelected); }); 如果(startIdx+allItems.length对于(var i=2;iI甚至尝试使用计时器来控制此行为,但没有效果。它只加载164个图像中的20个。我真的不明白发生了什么。任何快速帮助都将不胜感激。嗨,Yuvi,感谢您的快速响应。添加外部循环会导致循环无限次运行,因为AJAX调用是异步的。我尝试了使用计时器控制递归,但这也不起作用。我认为这与堆有关,因为我得到了以下控制台消息:dalvikvm heap(19807):Grow heap(frag case)3850256字节分配到11.130MB似乎这个问题是针对蜂巢的。冰淇淋三明治和姜饼正确呈现HTML内容。顺便说一句:ajax可以设置为非异步-这就是我对页面的意思,一个接一个感谢Yuvi的帮助。正如我提到的,这个问题是针对蜂巢的。我正在加载web内容这就是安卓蜂巢造成问题的原因。