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

当前回答

只是供那些可能有同样问题的人参考——我只需要让我的服务器以application/ JSON的形式发送回JSON,默认的jQuery处理程序就可以正常工作。

其他回答

我的错误是在javascript中忘记了url周围的单/双引号:

错误的代码是:

window.location = https://google.com;

和正确的代码:

window.location = "https://google.com";

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

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

当我使用jQuery.getJSON()试图反序列化无穷大的浮点值时,我得到了一个“SyntaxError:意外令牌I”,编码为INF,这在JSON中是非法的。

之所以会发生这种情况,是因为我在快速服务器中设置了一个规则,将任何404路由回/#加上原始请求。允许angular router/js处理请求。如果没有js路由来处理这个路径,一个到/#/的请求就会发送到服务器,也就是一个到/的请求,整个网页。

例如,如果我想请求/correct/somejsfile.js,但我没有输入到/wrong/somejsfile.js,请求就会发送到服务器。该位置/文件不存在,因此服务器返回302位置:/#/wrong/somejsfile.js。浏览器愉快地跟随重定向,并返回整个网页。浏览器将页面解析为js,您将得到

未捕获SyntaxError:意外的令牌<

因此,为了帮助找到有问题的路径/请求,请查找302个请求。

希望这能帮助到别人。

我做错了

   `var  fs = require('fs');
    var fs.writeFileSync(file, configJSON);`

我已经初始化了fs变量。但我还是把var放在了第二行。这个也给出了那种错误。