我正在尝试在phonegap中运行一个Android应用程序,它从链接中获取JSON数据。 我编写的html代码(参考教程)如下
<html>
<head>
<script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
<script type="application/javascript">
$(document).ready(function(){
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
});
function loadJSON()
{
var data_file = "http://www.tutorialspoint.com/json/data.json";
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
http_request=new XMLHttpRequest();
}
else
{// code for IE6, IE5
http_request=new ActiveXObject("Microsoft.XMLHTTP");
}
http_request.onreadystatechange = function(){
if (http_request.readyState == 4 && http_request.status == 200)
{
var jsonObj = JSON.parse(http_request.responseText);
document.getElementById("Name").innerHTML = jsonObj.name;
document.getElementById("Country").innerHTML = jsonObj.country;
}
}
http_request.open("GET", data_file, true);
http_request.send();
}
</script>
</head>
<body>
<h1>Cricketer Details</h1>
<table class="src">
<tr><th>Name</th><th>Country</th></tr>
<tr><td><div id="Name">Sachin</div></td>
<td><div id="Country">India</div></td></tr>
</table>
<div class="central">
<button type="button" onclick="loadJSON()">Update Details </button>
</body>
</html>
我在config.xml文件中添加了<access origin=".*"/>
。
我搜索了网页和提到的网站,在我的脚本中添加以下代码,这将解决我的问题。
$(document).ready(function(){
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
});
问题是虽然这个网页在我的浏览器(chrome)上工作,我已经安装了CORS扩展,但是当我在模拟器上运行它时,它不起作用。它在logcat中出错,表示&#34; XMLHttpRequest无法加载http://www.tutorialspoint.com/json/data.json。 Access-Control-Allow-Origin不允许使用null。&#34; 请帮我解决这个问题并在模拟器上运行这个应用程序,因为我将开发一个与此功能相似的应用程序。
编辑:在我的脚本中添加了jQuery,但仍然存在同样的问题..
$(document).ready(function(){
$("#button").click(function(){
var link="http://www.tutorialspoint.com/json/data.json";
$.ajax({
url: link,
type: "GET",
dataType: "json",
success: function(data) {
console.log("The server returned " + data.name);
//Play with the received json data.
document.getElementById("Name").innerHTML = data.name;
document.getElementById("Country").innerHTML = data.country;
},
error: function(model, response) {
alert("Web service error: " + response.responseText);
}
});
});
});
对于那些将此问题标记为重复的人,其他类似的问题并没有解决我的问题,因此我提出了一个新的更具体的问题。
解: 使用cordova-2.7.0解决了问题