0

Jqueryを使用してjsonファイルをフェッチしていますが、ブラウザーでエラーが発生します(予期しないトークン:)

これが私のJavaScriptです:

fetchScenes: function() {
        $j.ajax({
            crossDomain:true,
            url: 'xml/scenes.json',
            dataType: "jsonp",
            success: function( sceneXML ) {

            }
        }); 
    },

これが私のjsonからの部分的な構造です:

{ "scenes": {
    "scene": {
      "-id": "0",
      "-name": "Master",
      "scene": [
        {
          "-id": "1",
          "-name": "Weekday Vehicle",
          "-description": "Your home away from home.",
          "scene": [
            {
              "-id": "10",
              "-name": "For My Commute",
              "scene": [
                {
                  "-id": "13",
                  "-name": "Heading to School",
                  "scene": [
                    {
                      "-id": "20",
                      "-name": "Style Seeker",
                      "-vehicles": "1,3,6"
                    },
                    {
                      "-id": "21",
                      "-name": "Creative Thinker",
                      "-vehicles": "9,0,3"
                    }
                  ]
                },

JSONLintを使用してJSONを検証したので、何が問題なのかわかりません。

4

2 に答える 2

1

jQueryにJSONPを期待するように指示する場合は、JSONではなくJSONP [Wikipedia]を送信する必要があります。

つまり、応答は通常、URLとともに送信されるパラメーターの値someFunctionName({...json here...});(jQueryによって自動的に生成される)です。someFunctionNamecallback

jQueryは応答をJavaScriptとして評価していますが、プレーンJSONは無効なJavaScriptであるため、この場合はエラーが発生します。


または、実際にはクロスドメインリクエストではない場合(xml/scenes.json「ローカル」URL)、に変更dataType: "jsonp"dataType: "json"および削除crossDomain)します。

于 2012-04-24T19:39:05.060 に答える
-1

JSONが無効です。私は7つの開いている中括弧と3つの閉じている中括弧だけを数えています。また、角かっこの数は合計されません。

于 2012-04-24T19:31:31.783 に答える