请求问题:未捕获的SyntaxError:意外的令牌/

时间:2015-10-14 13:18:05

标签: javascript jquery json cordova

我正在开发一个显示一些JSON数据的小应用程序 在列表视图中。为了接收数据,我使用了一个简单的请求 我总是遇到同样的问题:

  

Uncaught SyntaxError:意外的令牌:

我的代码:

 $.ajax({
   url: 'http://localhost/documents.json',
   data: {
      format: 'json'
   },
   error: function() {
      $('#info').html('<p>An error has occurred</p>');
   },
   dataType: 'jsonp',
   success: function(data) {
    // do something with the data
   },
   type: 'GET'
});      
});

我的JSON文件有效。我用JSON验证器检查了它。

2 个答案:

答案 0 :(得分:2)

无效的JSON(无论多么糟糕)如果用JSON.parse()或任何体面的专用解析器(这就是jQuery所做的)解析它,就无法生成JavaScript语法错误。所有其他标准数据类型(XML,HTML,纯文本...)也是如此。所有症状都表明您期待JSONP,但获得其他一些数据类型。内置的浏览器网络窗格应该显示您正在获得的内容。

无论如何,如果您只想要JSON而只需要JSON,那么您应该按照以下方式简化代码:

  1. 省略协议和主持人:

    url: 'http://localhost/documents.json',
    

    应该是:

    url: '/documents.json',
    

    (可能不是必需的,但有助于消除错误。)

  2. 要求正确的数据类型:

    dataType: 'jsonp',
    

    应该是:

    dataType: 'json',
    
  3. 不要再解析jQuery已经解析过的内容:

    var json = $.parseJSON(data);
    

    应该是:

    var json = data; // Yeah, nothing :)
    
  4. 这对于本地AJAX来说应该足够了。如果你真的需要一个跨站点请求(我问过两次而且从来没有得到答案)你必须调整你的服务器以返回相应的CORS头实现JSONP数据类型并更改你的客户端相应的代码因为你不再拥有JSON - 因为JSONP不是JSON!

答案 1 :(得分:0)

使用jsonlint.com检查您的json是否有效,或者您可以使用jsonmate.com。当我调试json时,这些对我很有帮助。

此外 - 有一个指向完整代码的链接会很有帮助。使用jsfiddle.net将您的代码放入 - 然后将其链接到此帖子。这将有助于社区调试您的代码。