我想使用下面的代碼從網站獲取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