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()、2つのパラメーターを使用してコールバックを呼び出します。また、別のコンテキストを適用しません。したがって、を使用せずにコールバックパラメータを使用して値にアクセスする必要があります。これを反映するようにコードを更新しました。function (index, value)function (key, value)
this

于 2012-10-31T11:25:27.837 に答える