1. ホーム
  2. ジャバスクリプト

[解決済み】Uncaught SyntaxError: 予期しないトークン :

2022-04-06 01:44:50

質問

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

解決方法は?

今、問題を解決しました。標準的な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オブジェクトがなぜ問題を起こすのか知っている人がいたら、ぜひ教えてほしいです。