Javascript Android上的本地Ajax请求/Sencha/PhoneGap

Javascript Android上的本地Ajax请求/Sencha/PhoneGap,javascript,android,cordova,extjs,Javascript,Android,Cordova,Extjs,我正试图通过本地Ajax请求在PhoneGap应用程序中加载一些内容。它在iPhone上似乎运行良好,但Android无法找到该文件 事情是这样的: Ext.Ajax.request({ url: 'file:///android_asset/webapp/content/file.html', success: function(response, opts) { console.log('response ' + response.re

我正试图通过本地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);
        }
    });
我已经调整了清单并设置了互联网权限,但仍然没有成功


你知道吗

我不确定这是否完全符合您的要求,但请看看这个系列。它包括Android上PhoneGap的插件和内容。

在这种情况下,我要做的第一件事就是摆脱对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();

您使用的是哪个版本的Sencha Touch?正如Simon指出的,许多LIB在遇到响应代码0时报告失败,Sencha Touch在2.0.0中修复了这一问题

第二,尝试删除file:///android_asset/webapp/ 作为ULR的一部分,一个指向您的内容目录的相对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);
    }
});

Web浏览器不允许访问本地文件以确保更好的安全性。[