我在我的MooTools脚本中运行一个AJAX调用,这在Firefox中工作得很好,但在Chrome中,我得到了一个未捕获的SyntaxError:意外令牌:错误,我不能确定为什么。注释掉代码来确定坏代码在哪里不会产生任何结果,我认为这可能是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();
  });
});

当前回答

今天我也遇到了这种情况。我使用EF和返回一个实体响应AJAX调用。实体上的虚拟属性导致服务器上未检测到的周期性依赖项错误。通过在虚拟属性上添加[ScriptIgnore]属性,这个问题得到了解决。

与其使用ScriptIgnore属性,不如直接返回DTO。

其他回答

在我的情况下,这是一个错误的url(不存在),所以也许你的“发送”在第二行应该是其他…

我得到这个错误,因为我在脚本标签中缺少类型属性。

最初我使用,但当我在脚本标记内添加类型属性时,我的问题就解决了

这种情况刚刚发生在我身上,而原因并不是上述原因中的任何一个。我使用jQuery命令getJSON和添加回调=?使用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; 
}

希望这能在将来帮助到别人。

在我的例子中,把/放在脚本的src或样式表的href的开头就解决了这个问题。

在我的情况下,我遇到了同样的错误,而运行spring mvc应用程序由于错误的映射在我的mvc控制器

@RequestMapping(name="/private/updatestatus")

我把上面的映射改为

 @RequestMapping("/private/updatestatus")

or

 @RequestMapping(value="/private/updatestatus",method = RequestMethod.GET)