0

試してみましたが、なぜこの JSON が無効なのかわかりませんでした (www.jsonlint.com に置いたとき)。JSONは次のとおりです。

    [
    {
        "title": "COFA NEW SOUTH WALES ",
        "img": "images/uni/cofa.png",
        "desc": "One of the Best University",
        "url": "http://127.0.0.1:8888/ilets/app/col.html"
    },
    {
        "title": "MIDDLESEX UNIVERSITY ",
        "img": "images/1339977840.jpg",
        "desc": "Well this is Testi",
        "url": "http://127.0.0.1:8888/ilets/app/MIDDLESEX UNIVERSITY.html"
    },
    {
        "title": "ROYAL COLLEGE OF ARTS ",
        "img": "images/uni/1339978144.png",
        "desc": "This is One of the best University",
        "url": "http://127.0.0.1:8888/ilets/app/ROYAL COLLEGE OF ARTS.html"
    },
    {
        "title": "UNIVERSITY OF SCOTLAND ",
        "img": "images/uni/1339996882.gif",
        "desc": "SCOTLAND OWNS THIS UNIVERSITY",
        "url": "http://127.0.0.1:8888/ilets/app/UNIVERSITY OF SCOTLAND.html"
    }
]
4

2 に答える 2

2

質問で示した JSON は有効です。一方、コメント セクションで言及したスクリプト ( http://www.syedmujahidali.com/ilets/retrive.php) は JSON ではなく HTML を返すため、このスクリプトの結果を JSON パーサーで解析しようとすると、明らかに失敗します。応答は次のようになります。

<head>

<meta charset="UTF-8"></head><body onload="abc()">
<script>
function abc(){
document.getElementById('copy').innerHTML = document.getElementById('content').innerHTML;
var ab=  document.getElementById('content').innerHTML;
}
</script>

<div id="content" style="display:none;">


[{"title":"COFA NEW SOUTH WALES "  ,"img":"images/uni/cofa.png","desc":"One of the Best University","url":"http://127.0.0.1:8888/ilets/app/col.html"},<br>{"title":"MIDDLESEX UNIVERSITY "  ,"img":"images/1339977840.jpg","desc":"Well this is Testi","url":"http://127.0.0.1:8888/ilets/app/MIDDLESEX UNIVERSITY.html"},<br>{"title":"ROYAL COLLEGE OF ARTS "  ,"img":"images/uni/1339978144.png","desc":"This is One of the best University","url":"http://127.0.0.1:8888/ilets/app/ROYAL COLLEGE OF ARTS.html"},<br>{"title":"UNIVERSITY OF SCOTLAND "  ,"img":"images/uni/1339996882.gif","desc":"SCOTLAND OWNS THIS UNIVERSITY","url":"http://127.0.0.1:8888/ilets/app/UNIVERSITY OF SCOTLAND.html"}]</div>

<div id="copy">

</div>



</body>
于 2012-06-18T06:48:43.943 に答える
0

わかりました、これは奇妙です。JSON はここで生成されます: syedmujahidali.com/ilets/retrive.php ここからコピーして JSONlint に貼り付けると、無効と表示されます。

そのページからの応答の表示されたテキストのみを見ると (私がその区別をする理由についてはDarin の回答を参照してください)、問題は、応答がBOMで開くことです。BOM は JSON を無効にします。私はそのリンクに行き、すべてを選択してコピーし、それをjsonlint.comに貼り付けて、あなたが得ている「無効なトークン」エラーを得ました。だから私はそれをvimに貼り付けました.vimはテキストの冒頭にFE FFを表示しました.

そのため、PHP ページが BOM で始まる理由を見つけて修正することで解決できます。UTF-8 の BOM は必要ありません。

于 2012-06-18T06:44:56.070 に答える