Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery/ajax的json请求中出现意外令牌_Javascript_Jquery_Ajax_Json_Jsonp - Fatal编程技术网

Javascript jquery/ajax的json请求中出现意外令牌

Javascript jquery/ajax的json请求中出现意外令牌,javascript,jquery,ajax,json,jsonp,Javascript,Jquery,Ajax,Json,Jsonp,我正在使用Jquery获取一个json文件,但浏览器中出现了错误 以下是我的javascript: fetchScenes: function() { $j.ajax({ crossDomain:true, url: 'xml/scenes.json', dataType: "jsonp", success: function( sceneXML ) { }

我正在使用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,所以我不确定问题出在哪里。

您的JSON无效。我数了7个开始的花括号,只有3个结束的花括号。另外,括号的数量也没有加起来。

如果您告诉jQuery希望使用JSONP,那么您必须发送,而不是JSON

也就是说,响应将是someFunctionName{…json here…};其中someFunctionName通常是随jQuery自动生成的URL一起发送的回调参数的值

jQuery将响应评估为JavaScript,这在您的案例中会生成一个错误,因为纯JSON是无效的JavaScript


或者,如果它实际上不是跨域请求xml/scenes.json是本地URL,请将dataType:jsonp更改为dataType:json并删除跨域。

何时发生错误?应要求还是应要求?需要更多的调试,正如您所描述的,这似乎是正确的。它发生在JSON文件本身scenes.JSON,第2行如果您告诉jQuery期待JSONP,您必须发送JSONP,而不是JSON:否则,jQuery将以JavaScript形式评估内容,这将生成一个错误。。。或者,如果它实际上不是跨域请求,请将dataType:jsonp更改为dataType:json。我用JSONLint验证了json,所以我不确定问题出在哪里。我猜他没有把所有的东西都贴出来。我认为问题在于他没有返回JSONP。是的,json只是一个部分,所以你可以看到它的结构。Felix-你能解释一下它不返回JSONP是什么意思吗?@mheavers:JSON就是你所拥有的。JSONP实际上只是JavaScript,看起来像someFunctionName{…json here…};。啊-好吧-我想我可以强制它,我觉得我以前也这么做过,但它是在服务器上,而不是在本地文件系统上-我正试图绕过一个跨域的问题,但我想唯一的方法是将它放在JSONP中,如您所列。谢谢嗯,它以前没有说部分JSON。就我个人而言,我会更加努力地阐述我的问题。此外,当错误没有说明解析错误实际发生的位置时,为什么不发布整个JSON呢?另外,我没有注意到JSONP中的P: