在 phonegap 中加载存储在文本文件中的数组

Posted

技术标签:

【中文标题】在 phonegap 中加载存储在文本文件中的数组【英文标题】:Loading an array stored in a text file in phonegap 【发布时间】:2014-10-12 12:05:25 【问题描述】:

不使用 jquery mobile 或其他框架将二维字符串数据从 /www 字典中的文本文件加载到 phonegap 中的 javascript 数组中的最有效方法是什么?

如果重要,也请随意选择哪种格式的文本文件最好。

我试过了:

var request = new XMLHttpRequest();

request.open("GET", "/android_asset/data.txt");

request.onreadystatechange = function() //Call a function when the state changes.
    console.log("* data.txt1 " );

    if (request.readyState == 4) 

        console.log("*" + request.responseText + "* data.txt2" );

    
;

request.send();

它给了我错误:

[INFO:CONSOLE(0)] "XMLHttpRequest 无法加载 file:///android_asset/data.txt。跨源请求仅支持 HTTP。",来源:file:///android_asset/www/index。 html (0)

【问题讨论】:

您可以使用本机浏览器/Webview(如果是phonegap)XMLHttpRequest 在参数中指定文件的路径。然后根据是 JSON、XML、CSV 还是您期望的任何格式来解析加载的数据。 【参考方案1】:

既然您使用的是cordova,为什么不使用提供的本机文件系统支持。下面的代码应该适用于 ios 和 android。

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) 
            fs.root.getFile("../myapp/www/content/" + "words.txt", null, function(fe)
            
                fe.file(function(f) 
                    var reader = new FileReader();
                    reader.onloadend = function(evt) 
                        // do sth with the reader.result data    
                        console.log(reader.result);
                    
                    reader.readAsText(f);
                , fail);
            , fail);
        , fail);

fail 只是上面代码中处理失败情况的回调。

【讨论】:

在 Android 上测试时出现错误:“Uncaught ReferenceError: LocalFileSystem is not defined” 你添加文件插件了吗? Cordova 文件插件:github.com/apache/cordova-plugin-file/blob/master/doc/index.md 在我的例子中,路径是www/some file name。我不需要输入应用名称

以上是关于在 phonegap 中加载存储在文本文件中的数组的主要内容,如果未能解决你的问题,请参考以下文章

从一个巨大的(> 200MB)数组文件中加载随机对象而不加载整个数组

在 iPhone 应用程序中加载文本数据

Phonegap混合iOS应用程序中加载的远程网页可以将数据保存到iOS文件系统吗?

Swift - 根据数组值从 Parse 表中加载

在 PhoneGap/Sencha Touch 中加载外部 Web 服务

如何在 Google BigQuery 中加载大文本文件