我正在使用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文件。
有什么想法吗?
答案 0 :(得分:3)
将从“_liqui-cult.html”加载AJAX的html文件的名称更改为相同的名称,而不使用下划线“liqui-cult.html”修复问题。
答案 1 :(得分:0)
您的项目似乎还有其他问题。以下要点包含我的测试应用程序中的一些文件,它在Android中没有任何问题。