1

ページで次の jQuery スクリプトを実行しています。

<script type="text/javascript" charset="utf-8" src="{{ STATIC_URL }}js/raty/js/jquery.raty.min.js"></script>
<script type ="text/javascript"> 
jQuery(document).ready(function($) {
         $('.yourrating').each(function(index){
          $(this).raty({
            readOnly:  false,
            path: "{{ STATIC_URL }}js/raty/img/",
score: $(this).children("span:first").text(),
            click: function(score, evt) {
                var vote_url = "/spice/rate/" + this.attr('id').substring(2) + "/" + score + "/";
                $.ajax({
                  url: vote_url,
                  success: function(){
                  alert('vote successful');
                  }
                });
            }
          });
        $('.thingrating').raty({
          readOnly:  true,
          start:     2,
         path: "{{ STATIC_URL }}js/raty/img/",
score: $(this).children("span:first").text(),
        });
        });
    });
  </script>

現在、ユーザーがクリックすると、アクションが認識されず、ポップアップが表示されます。これは、変数が正しくサブされていないことを示しています。これを確認するためvar vote_urlに、直接パスに変更しましたが"spice/rate/1/2"、これは実際に正しく機能しました。

これにより、次の 2 つの疑問が生じます。

  1. どのURLが使用されているかを確認するためにデバッグするにはどうすればよいですか(つまり、変数がサブされていますか?)
  2. この問題を修正するにはどうすればよいですか?

テンプレートから抜粋した関連するコードを次に示します。

<div class="yourrating" id="t_{{ item.id }}"><span style="display:none;">{{score}}</span></div>

4

1 に答える 1

1

それを少し片付けて、受け入れるための答えを出しましょう!

<script type ="text/javascript"> 
(function($) {
    $(function() {
        $('.yourrating').each(function(index,elem){
            $(elem).raty({
                readOnly:  false,
                path: "{{ STATIC_URL }}js/raty/img/",
                score: $(elem).children("span:first").text(),
                click: function(score, evt) {
                    var vote_url = "/spice/rate/" + this.id.substring(2) + "/" + score + "/";
                    $.ajax({
                        url: vote_url,
                        success: function(){
                            alert('vote successful');
                        }
                    });
                }
            });
            $('.thingrating').raty({
                readOnly: true,
                start: 2,
                path: "{{ STATIC_URL }}js/raty/img/",
                score: $(elem).children("span:first").text(),
            });
        });
    });
})(jQuery);
</script>​​​​​​​​​​​​​​
于 2012-10-30T16:41:53.743 に答える