jSON:未捕获的语法错误:意外的令牌

jSON: Uncaught SyntaxError: Unexpected token

本文关键字:错误 令牌 语法 意外 jSON      更新时间:2023-09-26

我知道我不是第一个收到此错误的人,并且在堆栈溢出上还有很多关于此错误的其他帖子。但是,我找不到解决方案,因此写了这个问题。

我比较新鲜,最近开始学习JSON,jQuery,JavaScript和HTML5。因此,我想通过下面非常基本的示例进行一些实践。

<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"></script>
<script>
debugger;
</script>
<title>Doc Title</title>
</head>
<body>
<p id="rssFeed">News Loadin...</p>
<script>
debugger;
var yQuery = 'http://news.google.com/news?geo=02138&output=rss';
var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent("select * from xml where url='" + yQuery + "'") + '&format=json&callback=?';
debugger;
(function(){
    debugger;
    $.getJSON(yql)
    debugger;
     .done(function(data){
        debugger;
        $.each(data.query.results.item, function(i,item){
            alert(item.link);
        });
     });
})();
</script>
</body>
</html>

这个 HTML 文件在我的本地机器上,我正在 Chrome 浏览器中对其进行测试。我在浏览器中看到的唯一内容是"新闻加载..."发短信。我没有收到任何警报(来自警报(item.link(;)。

我尝试在Chrome(F12(中调试此代码,并在代码中放置了一些"调试器"。在调试窗口中,我在行.done(function(data)看到Uncaught SyntaxError: Unexpected token .错误

对于 URL,我已经尝试了这两个选项,如堆栈覆盖流上其他答案的建议,但存在相同的错误。

  • 回调=?
  • 回调=CBFUNC

yql 将具有以下值:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D'http%3A%2F%2Fnews.google.com%2Fnews%3Fgeo%3D02138%26output%3Drss'&format=json&callback=cbfunc

如果我将带有'cbfunc' yql放在浏览器 URL 中,我会得到 JSON,如果我输入'?'我会得到错误。但是,当我加载 HTML 时,它们都不起作用,并且两者都Uncaught SyntaxError: Unexpected token收到相同的错误。

我注意到的另一个问题是,每当我在 Chrome 中打开此文件时,调试器只会在<head>元素下<script>中的第一个debugger停止。它不会停止在<body>.中的任何debugger语句 即使我将断点(通过选择行号(放在 Chrome 开发工具中,也会发生这种情况。它不会停留在<body>元素中。

我对这个东西很陌生,所以请原谅我在这里的任何愚蠢错误。

问候鲁米特

在你的代码中

$.getJSON(yql)
    debugger; // <<== remove this line
        .done(function(data){

.done()$.getJSON(yql)上调用,您的debugger正在破坏语法

删除 .done(..( 前面的行上的"调试器"。.done(..( 是在从 $.getJSON(yql( 返回的对象上调用的。