我在我的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();
  });
});

当前回答

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

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

我把上面的映射改为

 @RequestMapping("/private/updatestatus")

or

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

其他回答

当你请求JSON文件时,服务器返回JavaScript内容类型头(text/ JavaScript)而不是JSON (application/ JSON)。

根据MooTools文档:

带有javascript内容类型的响应将被自动评估。

结果MooTools试图评估你的JSON作为JavaScript,当你试图评估这样的JSON:

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

作为JavaScript,解析器将{和}视为块作用域,而不是对象符号。它与求值以下“code”相同:

"votes":47,"totalvotes":90

如你所见,:在这里完全出乎意料。

解决方案是为JSON文件设置正确的Content-Type头。如果你用.json扩展名保存它,你的服务器应该自己做。

看到红色错误

未捕获SyntaxError:意外的令牌<

在Chrome开发人员的控制台选项卡中是响应体中的HTML指示。

您实际看到的是浏览器对意想不到的顶部行<!DOCTYPE html>从服务器。

我刚刚解决了这个问题。有一些东西导致了标准请求调用的问题,所以这是我使用的代码:

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

如果有人知道为什么标准请求对象给我的问题,我很想知道。

我也遇到了同样的问题,结果是Json从服务器返回 不是有效的Json-P。如果不使用跨域调用,请使用常规Json。

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