我正在开发一个显示一些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验证器检查了它。
答案 0 :(得分:2)
无效的JSON(无论多么糟糕)如果用JSON.parse()或任何体面的专用解析器(这就是jQuery所做的)解析它,就无法生成JavaScript语法错误。所有其他标准数据类型(XML,HTML,纯文本...)也是如此。所有症状都表明您期待JSONP,但获得其他一些数据类型。内置的浏览器网络窗格应该显示您正在获得的内容。
无论如何,如果您只想要JSON而只需要JSON,那么您应该按照以下方式简化代码:
省略协议和主持人:
url: 'http://localhost/documents.json',
应该是:
url: '/documents.json',
(可能不是必需的,但有助于消除错误。)
要求正确的数据类型:
dataType: 'jsonp',
应该是:
dataType: 'json',
不要再解析jQuery已经解析过的内容:
var json = $.parseJSON(data);
应该是:
var json = data; // Yeah, nothing :)
这对于本地AJAX来说应该足够了。如果你真的需要一个跨站点请求(我问过两次而且从来没有得到答案)你必须调整你的服务器以返回相应的CORS头或实现JSONP数据类型并更改你的客户端相应的代码因为你不再拥有JSON - 因为JSONP不是JSON!
答案 1 :(得分:0)
使用jsonlint.com检查您的json是否有效,或者您可以使用jsonmate.com。当我调试json时,这些对我很有帮助。
此外 - 有一个指向完整代码的链接会很有帮助。使用jsfiddle.net将您的代码放入 - 然后将其链接到此帖子。这将有助于社区调试您的代码。