我是JSON和这个论坛的新手,希望有人可以提供帮助。
在HTML文件中,我有以下javascript:
<script type="text/javascript" src="ExternalData.json"></script>
和
var mydata = JSON.parse(data);
alert(mydata.length);
var div = document.getElementById('data');
alert(mydata[0].name);
alert(mydata[1].name);
alert(mydata[0].age);
alert(mydata[1].age);
在另一个ExternalData.json文件中,我有:
data = '[{"name" : "Bob", "age" : "2"},{"name" : "Mary", "age" : "4"}]';
一切正常,但是当我尝试将返回标记添加到JSON文件时,如下所示:
data = '[
{"name" : "Bob", "age" : "2"},
{"name" : "Mary", "age" : "4"}]';
它不再适合我。
我错过了什么?基本的东西,但我不知道!
这最终将是一个由不熟悉编码的同事更新的大量数据。将所有信息放在一行上是行不通的。
答案 0 :(得分:2)
您的问题是浏览器无法理解如何处理字符串中的换行符,并且可能会抛出错误(请检查F12)。对我来说(Chrome),它无法编译字符串,只看到第一行作为字符串的内容。
您需要转义换行文字。在javascript中的每个换行符上添加一个向后斜杠。这将在编译后将字符串合并为一行,或者在某些浏览器中,一旦编译将保留换行符。
var data = '[\
{"name" : "Bob", "age" : "2"},\
{"name" : "Mary", "age" : "4"}]';
您可以在此处详细了解:JavaScript string with new line - but not using \n
答案 1 :(得分:0)
pepperjack的答案会起作用,但它会使你的json文件更难以维护。最好在没有<script language="JavaScript">
function test() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
parseResponse(this.responseText);
}
};
xmlhttp.open("GET", "demo.txt", true);
xmlhttp.send();
}
function parseResponse(data) {
var mydata = JSON.parse(data);
alert(mydata.length);
alert(mydata[0].name);
alert(mydata[1].name);
alert(mydata[0].age);
alert(mydata[1].age);
}
</script>
的情况下创建外部JSON文件,并使用XMLHTTP获取它:
[
{"name" : "Bob", "age" : "2"},
{"name" : "Mary", "age" : "4"}
]
demo.txt只包含:
{{1}}