3

データを含むJS(data.js)ファイルがあります

var Content = {
    Page1: {
        Tiles: [
        { "id": "1",
            "className": "home-test-class",
            "tileType": "widget",
            "tileColor": "red",
            "Bookmark": : {
                "Icon": "iconset", 
                "Class": "dummytext", 
                "Content": "Dummy Content",
                "URL": ""
            },
            "Tile": false,
            "SmallWidget": false,
            "Widget": false
        },
        { 
        "id": "1",
            "className": "title-class",
            "tileType": "widget",
            "tileColor": "red",
            "Bookmark": false,
            "Tile": false,
            "SmallWidget": false,
            "Widget": false
        },
        ]
    }
}

このデータを使用する INIT メソッドを作成しました

Init = function () {
        $.ajax({
            url: 'scripts/data.js',
            dataType: "json",
            contentType: 'application/json; charset=utf-8'
        }).done(function (data) {
            $.doTimeout(1000, function () {
                console.log(data);
                LoadViewData(data);
            });

        }).fail(function (request, error) {
            //Handle Failures here.
            alert('Error' + error);
        });
        ko.applyBindings(this);
    },

JsonParse エラーが発生します。

ノックアウトを使用してデータを UI にバインドしています。Fiddler を使用して応答を確認すると、「選択した応答に無効な JSON テキストが含まれていません」と表示されます

どうすれば修正できますか教えてください。

4

1 に答える 1

4

これは、JSONデータではなくJavascriptファイルを返すためです。このようにJavascriptファイルを使用することは意味がありません。

JSON文字列のみを含むようにファイルを変更し(以下の例)、残りの呼び出しに問題がないと仮定するとそれ$.ajax()は機能します。適切なJSON文字列は、すべての名前を二重引用符で囲むことに注意してください。また、バリデーターを介してJSONを実行すると、いくつかの問題があることがわかります(例で修正しました)。

{
    "Page1": {
        "Tiles": [
            {
                "id": "1",
                "className": "home-test-class",
                "tileType": "widget",
                "tileColor": "red",
                "Bookmark": {
                    "Icon": "iconset",
                    "Class": "dummytext",
                    "Content": "Dummy Content",
                    "URL": ""
                },
                "Tile": false,
                "SmallWidget": false,
                "Widget": false
            },
            {
                "id": "1",
                "className": "title-class",
                "tileType": "widget",
                "tileColor": "red",
                "Bookmark": false,
                "Tile": false,
                "SmallWidget": false,
                "Widget": false
            }
        ]
    }
}
于 2012-07-20T06:17:36.170 に答える