我遇到了这个问题: 我尝试将.json文件中的数据加载到我的网站,但是我对标题中的特殊字符(Ó,Í,É,space)有疑问。我只能更改.HTML文件 这是一个例子:
上传.json:
{
"Bibliotecas": [
{
"BIBLIOTECA": "Biblioteca General de Navarra ",
"DIRECCIÓN ": "Plaza de San Francisco",
"COD. POSTAL": 31001,
"POBLACIÓN": "Pamplona",
"TELÉFONO": 848427797,
.....................
html的:
<!DOCTYPE HTML>
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<title>JSON multiple zombies
</title>
<script src="HostFiles/jquery.js"></script>
<link href="reset.css" rel="stylesheet" type="text/css" media="screen">
<script>
$(document).ready(function() {
$.getJSON('json/bibliotecas.json', function(json) {
$.each(json.Bibliotecas, function () {
$('<article class="json"></article>').append(
'<p> ' + this.BIBLIOTECA + '</p>' +
'<p> ' + this["DIRECCIÓN "] + '</p>' +
'<p> ' + this.POBLACIÓN + '</p>' +
'<p> ' + this.TELÉFONO + '</p>' +
'</br></br>'
).appendTo('body');
});
});
});
</script>
</head>
<body>
</body>
</html>
结果:
Biblioteca General de Navarra
undefined
undefined
undefined
答案 0 :(得分:2)
您应该使用square bracket notation:
$.each(json.Bibliotecas, function() {
$('<article class="json"></article>').append(
'<p> ' + this["BIBLIOTECA"] + '</p>' +
'<p> ' + this["DIRECCIÓN"] + '</p>' +
'<p> ' + this["POBLACIÓN"] + '</p>' +
'<p> ' + this["TELÉFONO"] + '</p>' +
// ...
答案 1 :(得分:0)
在Javascript中,这些特殊字符不是有效标识符,因此您可以使用它们来定义对象和/或变量 因此,您无法使用它们来使用点语法遍历对象。
但是,您可以使用[key]
语法访问它们:
var direction = obj["Bibliotecas"][0]["DIRECCIÓN "];
正如您所见here。
你的循环会变成这样:
$.each(json["Bibliotecas"], function (index, value) {
$('<article class="json"></article>').append(
'<p> ' + value["BIBLIOTECA"] + '</p>' +
'<p> ' + value["COD. POSTAL"] + '</p>' +
'<p> ' + value["DIRECCIÓN "] + '</p>' +
'<p> ' + value["POBLACIÓN"] + '</p>' +
'<p> ' + value["TELÉFONO"] + '</p>' + ...
);
});
$.each()
方法使用两个参数调用回调,function (index, value)
用于数组,function (key, value)
用于对象映射;它也不会应用不同的上下文。
因此,我们必须使用回调参数而不是 this
来访问这些值。
我已经更新了代码以反映这一点。