1

jquery で json と ajax を使用しようとしていますが、問題が発生しています。json ファイルからデータを取得してページに表示しようとしています。

現時点では、コンソールに送信しようとしていますが、コンソールでnullになっています。私は自分が何を正しくしていて、何を間違っているのかわからないので、いくつかの指針を得ることができるかどうか疑問に思っていました.

これは私がリクエストのために持っているものです

$(document).ready(function() {
var json = (function () {
var json = null;
$.ajax({
    'async': false,
    'global': false,
    'url': 'js/refs.json',
    'dataType': "json",
    'success': function (refs) {
        json = refs;
    }
});
return json;
})(); 
console.log(json);

これはrefs.jsonにあるものです

var refs = {
"referee": [
        {
            "name": "Ellie",
            "company": "University",
            "position": "Lecturer",
            "address": "",
            "phone": "5750",
            "email": "ellie@ac.uk",
            "type": "Education"
        },
        {
            "name": "Matthew",
            "company": "",
            "position": "",
            "address": "23 High Street",
            "phone": " 962",
            "email": "matthew@aaa.com",
            "type": "Character"
        }
    ],
"project": [
        {
            "tab": "Dissertation",
            "title": "Can technology in the home be used to enhance learning of numeracy, in conjunction with the nantional curriculum",
            "yr": "2013",
            "link": [
                {
                    "name": "Artefact",
                    "links": "fypc",
                    "size": "",
                    "misc": ""
                }
                ],
            "docs": [
                {"type": "doc",
                "links": "fyp.docx",
                "size" :"3.78MB",
                },
                {"type": "pdf",
                "links": "fyp.pdf",
                "size" :"1.76MB",
                }
                ],
            "purpose": "School - Anglia Ruskin University",
            "grade": "Not yet awarded",
            "sshot": "fypc.png"
        },
        {
            "tab": "Network and IT Operations",
            "title": "Virtual inter-office network with firewall. (Built using PacketTracer 5.3.3)",
            "yr": "2013",
            "link": [
                {
                    "name": "Serial Cable Connection Version",
                    "links": "",
                    "size": "204KB",
                    "misc": "(Submitted version)"
                },
                {
                    "name": "Frame Relay Version",
                    "links": "",
                    "size": "129KB",
                    "misc": ""
                },
                {
                    "name": "Packet Tracer 5.3.3 Download",
                    "links": "",
                    "size": "48.2MB",
                    "misc": "(.zip)"
                }
            ],
            "docs": [
                {
                    "type": "doc",
                    "links": "nio.docx",
                    "size" :"223KB",
                },
                {
                    "type": "pdf",
                    "links": "nio.pdf",
                    "size" :"943.KB",
                }
                ],
            "purpose": "School - Anglia Ruskin University",
            "grade": "Not yet awarded",
            "sshot": "nio1.png"
        }
    ]
};

私が言うように、console.log を使用したコンソールからの応答は null です。どこが正しいのか、どこが間違っているのかわかりません。リクエストは、ここの投稿から取得したスニペットです (変数に json をロード)

どんなポインタでも大歓迎です

前もって感謝します

4

4 に答える 4

4

あなたのファイルは JSON ではありません!

それでは始まりますvar refs = ....

割り当て (および末尾のセミコロン) を抑制します。

(あなたが本当に怠惰な場合は、@MikeBの回答からファイルにあるはずのものをコピーして貼り付けてください)

于 2013-05-29T21:45:32.623 に答える
2

私が気づいたことの 1 つは、JSON が無効であることです。

39行目"size": "3.78MB",

44行目"size": "1.76MB",

79行目"size": "223KB",

すべてに余分なコンマがありました

これを JSON として使用してみてください

{
    "referee": [
        {
            "name": "Ellie",
            "company": "University",
            "position": "Lecturer",
            "address": "",
            "phone": "5750",
            "email": "ellie@ac.uk",
            "type": "Education"
        },
        {
            "name": "Matthew",
            "company": "",
            "position": "",
            "address": "23 High Street",
            "phone": " 962",
            "email": "matthew@aaa.com",
            "type": "Character"
        }
    ],
    "project": [
        {
            "tab": "Dissertation",
            "title": "Can technology in the home be used to enhance learning of numeracy, in conjunction with the nantional curriculum",
            "yr": "2013",
            "link": [
                {
                    "name": "Artefact",
                    "links": "fypc",
                    "size": "",
                    "misc": ""
                }
            ],
            "docs": [
                {
                    "type": "doc",
                    "links": "fyp.docx",
                    "size": "3.78MB"
                },
                {
                    "type": "pdf",
                    "links": "fyp.pdf",
                    "size": "1.76MB"
                }
            ],
            "purpose": "School - Anglia Ruskin University",
            "grade": "Not yet awarded",
            "sshot": "fypc.png"
        },
        {
            "tab": "Network and IT Operations",
            "title": "Virtual inter-office network with firewall. (Built using PacketTracer 5.3.3)",
            "yr": "2013",
            "link": [
                {
                    "name": "Serial Cable Connection Version",
                    "links": "",
                    "size": "204KB",
                    "misc": "(Submitted version)"
                },
                {
                    "name": "Frame Relay Version",
                    "links": "",
                    "size": "129KB",
                    "misc": ""
                },
                {
                    "name": "Packet Tracer 5.3.3 Download",
                    "links": "",
                    "size": "48.2MB",
                    "misc": "(.zip)"
                }
            ],
            "docs": [
                {
                    "type": "doc",
                    "links": "nio.docx",
                    "size": "223KB"
                },
                {
                    "type": "pdf",
                    "links": "nio.pdf",
                    "size": "943.KB"
                }
            ],
            "purpose": "School - Anglia Ruskin University",
            "grade": "Not yet awarded",
            "sshot": "nio1.png"
        }
    ]
}
于 2013-05-29T21:46:47.087 に答える
1

データを割り当てる前に Json var を返しています。この変更をテストしてください

var json= null;
$(document).ready(function() {

$.ajax({
    'async': false,
    'global': false,
    'url': 'js/refs.json',
    'dataType': "json",
    'success': function (refs) {
        json= refs;
        LoadedJSON();
    }
});
}); 

function LoadedJSON(){
console.log(json);
}
于 2013-05-29T21:50:05.633 に答える