3

我正在使用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 调用从未成功。我尝试将 url 更改为简单的_liqui-cult.html(没有基于 file:// 的 url)。我也试过了/_liqui-cult.html

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

无论我做什么,我要么得到 404 作为状态,要么,如果我将 url 更改为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 文件。

有任何想法吗?

4

2 回答 2

3

将通过 AJAX 加载的 html 文件的名称从“_liqui-cult.html”更改为不带下划线“liqui-cult.html”的相同名称解决了该问题。

于 2012-06-05T16:59:47.490 回答
0

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

https://gist.github.com/2873186

于 2012-06-05T07:00:49.710 回答