1

我正在尝试通过本地 Ajax 请求在 PhoneGap 应用程序中加载一些内容。它似乎在 iPhone 上运行良好,但 Android 找不到该文件。

它是这样的:

Ext.Ajax.request({
        url: 'file:///android_asset/webapp/content/file.html',
        success: function(response, opts) {
            console.log('response ' + response.responseText);
        }
        failure: function(response, opts) {
            console.log('response ' + response.responseText);
        }
    });

我已经调整了Manifest并设置了Internet Permission,仍然没有成功。

你有什么主意吗?

4

3 回答 3

0

我不确定这是否完全满足您的要求,但请查看这个Phonegap Android 插件集合。它包括用于在 Android 上为 PhoneGap上传下载内容的插件。

于 2012-05-30T10:03:04.840 回答
0

在这种情况下,我要做的第一件事就是摆脱对 Sencha 或 jQuery 等第三方库的依赖,直接使用 XHR。存在一个问题,即从文件协议发出请求有时会返回状态 0,而实际上它是 200。大多数库都已修复此问题,但您永远不知道。试试这个 XHR 代码,它应该在 Android 上运行得很好:

var request = new XMLHttpRequest();
    request.open("GET", "file:///android_asset/webapp/content/file.html", true);
    request.onreadystatechange = function(){
        if (request.readyState == 4) {
            if (request.status == 200 || request.status == 0) {
                console.log("response " + request.responseText);
            }
        }
    }
    request.send();
于 2012-05-30T14:59:10.143 回答
0

您使用的是哪个版本的 Sencha Touch?正如西蒙指出的那样,许多库在遇到响应代码 0 时报告失败,Sencha Touch 从 2.0.0 开始修复此问题

http://www.sencha.com/forum/showthread.php?173577-Ext.data.Connection-fails-when-evaluating-a-file-protocol-s-status

其次,尝试删除 ULR 的 file:///android_asset/webapp/ 部分,内容目录的相对 url 应该可以正常工作,并减轻您为到达该路径可能进行的任何操作系统检测切换。

Ext.Ajax.request({
    url: 'content/file.html',
    success: function(response, opts) {
        console.log('response ' + response.responseText);
    }
    failure: function(response, opts) {
        console.log('response ' + response.responseText);
    }
});
于 2012-05-30T20:51:17.033 回答