0

この関数を呼び出して JSON データを取得し、それを使用してページのさまざまな部分に入力します。js は別の JS ファイルです。

$(document).ready(function(){
$.getJSON('data.json', function(data) {

    var pg_title=data.metadata.title;
    $(document).ready(function (){
        document.title = pg_title;
        document.getElementById("page_title").innerHTML=pg_title;
    });

    for (var i in data.sections) {
        var section_title=data.sections[i].title;
        var section_content=data.sections[i].content;
        var section_id=data.sections[i].title;
            var lastChar = section_id.indexOf(' ');
        section_id = section_id.slice(0,lastChar).toLowerCase();
        document.getElementById("sections").innerHTML+="<h2 id='" + section_id + "'>" + section_title + "</h2>" + "<p>" + section_content + "</p>";
    }

});
});

そして、次のように HTML から呼び出します。

<script src="/design-library/js/getJSON.js" type="text/javascript"></script>

セットアップを編集して、(a) ペアのファイル名 (例: Cabinet.html と Cabinet.json) を使用するか、(b) json ファイル名を HTML ファイルからパラメーターとして関数に渡すだけにするにはどうすればよいですか?

4

3 に答える 3

2

次のように、コードを関数でラップできます。

function SomeFunctionName(jsonName)
{
    $.getJSON(jsonName, function(data) {

        var pg_title=data.metadata.title;
        $(document).ready(function (){
            document.title = pg_title;
            document.getElementById("page_title").innerHTML=pg_title;
        });

        for (var i in data.sections) {
            var section_title=data.sections[i].title;
            var section_content=data.sections[i].content;
            var section_id=data.sections[i].title;
                var lastChar = section_id.indexOf(' ');
            section_id = section_id.slice(0,lastChar).toLowerCase();
            document.getElementById("sections").innerHTML+="<h2 id='" + section_id + "'>" + section_title + "</h2>" + "<p>" + section_content + "</p>";
        }

    });
}

次のようにhtmlから呼び出します。

  <script type="text/javascript"> 

 $(document).ready(function(){

    SomeFunctionName('data.json');

    });

</script>
于 2012-12-11T20:14:09.190 に答える
1

あなたのページのURLがhttp://path/cabinet.html

スクリプトでは、正規表現を使用してページ名を取得できます。

var pageName = /\/(.+)\.html/.exec(window.location.href)[1];

(pageName="cabinet" を返します)

次に、ページ名を関数に渡すことができます。

$.getJSON(pageName+'.json', function(data) {...
于 2012-12-11T20:24:33.520 に答える
0

クリストフのフィードバックに基づいて、これで終わりました。どうもありがとうございました。今--2番目のdocument.ready(.getJSON)を取り除くことができませんでした。これを行うと関数が実行されないためです。

$(document).ready(function () {
"use strict";
var pageName;
if (!pageName) {
    pageName = "index";
} else {
    pageName = /\/(.+)\.html/.exec(window.location.href);
}

$.getJSON(pageName + '.json', function (data) {
    var pg_title;
    pg_title = data.metadata.title;
    $(document).ready(function() {
        document.title = pg_title;
        document.getElementById("page_title").innerHTML = pg_title;
    });

    for (i in data.sections) {
        var section_title, section_content, section_id, lastChar, i;
        section_title = data.sections[i].title;
        section_content = data.sections[i].content;
        section_id = data.sections[i].title;
        lastChar = section_id.indexOf(' ');
        section_id = section_id.slice(0, lastChar).toLowerCase();
        document.getElementById("sections").innerHTML += "<h2 id='" + section_id + "'>" + section_title + "</h2>" + "<p>" + section_content + "</p>";
    }
});
});
于 2012-12-11T21:50:08.750 に答える