未捕获的SyntaxError:意外的标记:

我在我的MooTools脚本中运行AJAX调用,这在Firefox中正常工作,但在Chrome中我得到一个Uncaught SyntaxError: Unexpected token :错误,我无法确定原因。 注释掉代码以确定错误代码在什么地方什么都不产生,我想这可能是JSON返回时的问题。 检查控制台我看到返回的JSON是这样的:

{"votes":47,"totalvotes":90}

我没有看到任何问题,为什么会发生这种错误?

vote.each(function(e){
  e.set('send', {
    onRequest : function(){
      spinner.show();
    },
    onComplete : function(){
      spinner.hide();
    },
    onSuccess : function(resp){
      var j = JSON.decode(resp);
      if (!j) return false;
      var restaurant = e.getParent('.restaurant');
      restaurant.getElements('.votes')[0].set('html', j.votes + " vote(s)");
      $$('#restaurants .restaurant').pop().set('html', "Total Votes: " + j.totalvotes);
      buildRestaurantGraphs();
    }
  });

  e.addEvent('submit', function(e){
    e.stop();
    this.send();
  });
});

只是为可能有同样问题的人提供的一个参考 - 我只需要让我的服务器以应用程序/ json的形式发回JSON,并且默认的jQuery处理程序工作正常。


看到红色的错误

未捕获的SyntaxError:意外的标记<

在Chrome开发者的控制台标签中通常会显示301重定向 ,这可能是由.htaccess文件中的一条奇怪规则引起的。

你实际看到的是你的浏览器对来自服务器的意外顶行<!DOCTYPE html>的反应。


这一切都发生在我身上,原因并非如上所述。 我正在使用jQuery命令getJSON并添加callback=? 使用JSONP(因为我需要跨域),并返回JSON代码{"foo":"bar"}并获取错误。

这是因为我应该包含回调数据,如jQuery17209314005577471107_1335958194322({"foo":"bar"})

这里是我用来实现这个的PHP代码,如果使用JSON(没有回调),则代码会降级:

$ret['foo'] = "bar";
finish();

function finish() {
    header("content-type:application/json");
    if ($_GET['callback']) {
        print $_GET['callback']."(";
    }
    print json_encode($GLOBALS['ret']);
    if ($_GET['callback']) {
        print ")";
    }
    exit; 
}

希望这将有助于未来的人。

链接地址: http://www.djcxy.com/p/1245.html

上一篇: Uncaught SyntaxError: Unexpected token :

下一篇: How to post JSON to the server?