我想使用下面的代码从网站获取JSON数据,但是我得到错误Uncaught SyntaxError:意外标识符在文件中:///android_asset/www/projectName.html:1 如果我将数据从网站保存为.json文件,我可以很好地访问它,但如果从网站访问它,则不能访问。我如何从网站上完成这项工作?从外部网站获取JSON数据
HTML:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$.get('http://example.ca/log_sheets.json', function(data) {
alert('get performed');
var obj = eval ("(" + data + ")");
$("p").html(obj[0].log_sheet.activity_type);
});
});
});
</script>
</head>
<body>
<h2>Heading</h2>
<p>Display</p>
<button>Click me</button>
</body>
</html>
JSON数据的样本:
[{"log_sheet":{"activity_type":"Normal","activity_value":null,"carbs_value":25.0, ect... }}]
代码与PhoneGap的运行html页面:
package com.example.projectName;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
import org.apache.cordova.*;
public class MainActivity extends DroidGap {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/projectName.html");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
也许试试'console.log(data)'看看数据obj是什么样子 – 2012-07-30 21:04:32
你正在查询的网站需要支持[CORS](https://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing ),或者需要返回一个可以嵌入到页面中的'script'元素。 – 2012-07-30 21:05:32
这可能是一个跨域策略问题。另外,eval是邪恶的。 – 2012-07-30 21:06:36