使用PhoneGap,无法仅在Android上使用Ajax加载本地.html文件

时间:2012-06-04 22:27:36

标签: android jquery cordova

我正在使用PhoneGap(最新版),Jquery 1.7。我有麻烦通过AJAX将一些html加载到div中。我的问题很简单,我在www /目录中有一个index.html文件。还有一个执行此操作的js文件:

$.ajax({
 type:"GET",
 timeout:10000,
 dataType: "html",
 async: false,
 cache: false,
 url: "file:///android_asset/www/_liqui-cult.html",
 success: function(data) {
  $('#data_details .description').html(data); // never runs
 },
 error: function(xhr,msg){
   alert(xhr.status + ", " + msg);
   if(xhr.status == 0 || xhr.status == "0"){
    alert(xhr.responseText); // always blank, if runs
   }
 }
});

花了一天谷歌搜索这个错误,我尝试了很多东西,但AJAX调用永远不会成功。我已经尝试将网址改为简单地_liqui-cult.html(没有文件://基于网址)。我也试过/_liqui-cult.html

我开始尝试使用JQuery $.load,但这不起作用,所以我切换到更详细的$.ajax调用。

无论我做什么,我都会得到404作为状态,或者,如果我将网址更改为http://_liqui-cult.html,我的状态为0,但在responseText中没有任何内容。

所以,我把JQuery从等式中拿出来,并尝试了一个简单的XMLHttpRequest,如下所示:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
  if (xmlhttp.readyState==4 && (xmlhttp.status==200 || xmlhttp.status==0))
  {
    $('#data_details .description').html(xmlhttp.responseText);
    $.mobile.changePage('#screen_detail');
  }
}
xmlhttp.open("GET","_liqui-cult.html", true);
xmlhttp.send(null);

同样,我已经尝试了每个可以想象的url模式来映射到html文件。而且,我能得到的最好的是xmlhttp.responseText是空白的。

那么跨源问题呢?这是我尝试过的:     <access origin=".*"/>     <access origin="file://*"/>     <access origin="*"/>

同样,我已经尝试了所有映射到html文件的方法,使用那些不同的访问源设置,我仍然无法加载html文件。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

将从“_liqui-cult.html”加载AJAX的html文件的名称更改为相同的名称,而不使用下划线“liqui-cult.html”修复问题。

答案 1 :(得分:0)

您的项目似乎还有其他问题。以下要点包含我的测试应用程序中的一些文件,它在Android中没有任何问题。

https://gist.github.com/2873186