2

我遇到了这个问题:我尝试将 .json 文件中的数据加载到我的网站,但我遇到了标题中的特殊字符(Ó、Í、É、空格)的问题。我只能更改 .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
4

2 回答 2

2

您应该使用方括号表示法

$.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>'  +
        // ...
于 2012-10-31T11:16:18.467 回答
0

在 Javascript 中,这些特殊字符不是有效的标识符,因此您可以使用它们来定义对象和/或变量。
因此,您不能使用它们来使用点语法遍历您的对象。

但是,您可以使用以下[key]语法访问它们:

var direction = obj["Bibliotecas"][0]["DIRECCIÓN "];

正如你在这里看到的。

你的循环会变成这样:

$.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>' + ...
    );
});

更新 1

$.each()方法使用两个参数调用回调,function (index, value)用于数组和function (key, value)对象映射;它也不适用不同的上下文。
因此,我们必须使用回调参数而不是使用 this. 我已经更新了代码以反映这一点。

于 2012-10-31T11:25:27.837 回答