For loop 对于循环don';我不能和科尔多瓦一起工作

For loop 对于循环don';我不能和科尔多瓦一起工作,for-loop,cordova,For Loop,Cordova,我有一个querymobile/cordova应用程序。我有一个带有for循环的函数。如果我在浏览器中尝试,效果会很好,但在我的平板电脑上,他会在循环开始前停止。我在eclipse中没有发现错误 这是我的密码 function listPlan(){ alert("try to parse ics"); cal = $.parseIcs('sdcard/ical/'+aktFile); console.log(cal);

我有一个querymobile/cordova应用程序。我有一个带有for循环的函数。如果我在浏览器中尝试,效果会很好,但在我的平板电脑上,他会在循环开始前停止。我在eclipse中没有发现错误

这是我的密码

    function listPlan(){

        alert("try to parse ics");
        cal = $.parseIcs('sdcard/ical/'+aktFile);
        console.log(cal);

        alert('daten anzeigen');
        for (var i=0; i<cal.event.length; i++) {

            alert(i);
            $('#roosters').append('<div data-role="collapsible"><h3>'+cal.event[i].dtstart[0].value+'</h3></div>');

        }

        $('#roosters').collapsibleset('refresh');

    }
函数列表计划(){
警报(“尝试解析ics”);
cal=$.parseIcs('sdcard/ical/'+aktFile);
控制台日志(cal);
警报(“daten Anzigen”);

对于(var i=0;i我不确定是否可以使用ajax调用访问SD卡上的文件

尝试使用
cal=$.parseIcs('file:///sdcard/ical/“+aktFile);

如果它仍然不起作用,也许您应该使用phonegap文件api来获取该文件


编辑: 我已经执行了一些测试,通过使用不同的URL对Gingerbread、Jelly bean和KitKat进行ajax调用来检查对SD卡上文件的访问:

  • 'sdcard/test.txt'(就像您在初始代码中使用的那样):不 在我的测试设备上工作
  • “/sdcard/test.txt”:适用于姜饼和果冻豆
  • "file:///sdcard/test.txt“:在姜饼和果冻豆中起作用
  • "file://sdcard/test.txt“:在姜饼中有效,但在果冻豆中无效
没有人使用kitkat(似乎新的webview增加了一些限制)

因此,除非您使用kitkat进行测试,否则使用$.parseIcs应该可以工作

问题可能来自文件中的某些字符编码?您可以尝试在parseCalendar函数中添加一些调试代码,以了解为什么在解析过程中没有添加事件

编辑2
令人惊讶的是,在我的kitkat设备上,xhr访问SD卡上的文件需要在androidmanifest.xml中添加行
,我想说问题来自$.parseIcs没有返回预期的内容,也没有定义cal.event。这个函数从何而来?您是否在eclipse中的logcat选项卡中查找错误?是的,logcat.parseIcs()来自一个外部脚本。我已经说过,该脚本可以在浏览器中工作。这是我不理解的,但仍然不能工作。我认为这不是问题所在,因为如果parseIcs()无法打开该文件,我将得到一个错误,我仍然会得到“alert('daten anzegen');”,但随后程序停止更多:console.log(cal);给出(objekt)(objekt)这很好。您是否尝试过为cal.event和cal.event.length使用console.log?或者可能是console.log(JSON.stringify(cal)).length=0,问题实际上是路径。我不明白,因为我没有从解析脚本中得到错误,但是如果我在应用程序中使用路径,它会工作^^^,所以我必须看看它如何与cordova get文件一起工作。感谢这个想法。为什么我没有自己做这件事呢?:Dthats it。使用第二个选项它会工作。这是我唯一的选择我自己没试过。谢谢:)