我在MooTools脚本中运行AJAX调用,在Firefox中运行正常,但是在Chrome中出现Uncaught SyntaxError: Unexpected token :错误,我无法确定原因。注释掉代码以确定错误代码在什么地方不会产生任何结果,我认为这可能与返回JSON有关。在控制台中检查,我看到返回的JSON是这样的:
Uncaught SyntaxError: Unexpected token :
{"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(); }); });
我刚刚解决了这个问题。导致标准Request调用出现问题的原因是,这是我改用的代码:
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); }); });
如果有人知道为什么标准Request对象给我带来问题,我很想知道。