【问题标题】:Refresh a div to shows new rating in Django using JQuery and AJAX使用 JQuery 和 AJAX 刷新 div 以在 Django 中显示新评级
【发布时间】:2013-04-02 10:46:24
【问题描述】:

我是 django 的新手,无法找到仅刷新 div 的方法,并且 div 会显示我当前的星级评分。我的想法是用户可以通过点击星星来查看平均评分和评分,点击后我希望星星显示新的平均评分而不刷新整个页面。

这是 div:

<div id="rating">
    <div class="movierating" id="o_{{ object.id }}">
        <span style="display:none;">{{ object.rating_vote.get_rating }}</span>
        {{ object.rating_vote.get_rating }}
    </div>
</div>

而 javascript 是:

  <script type="text/javascript" charset="utf-8">
    $(document).ready(function() {  
         $('.movierating').each(function(index){
          $(this).raty({
            readOnly:  false,
            path: "{{ STATIC_URL }}images/",
            start: $(this).children("span:first").text(),
            click: function(score, evt) {
                var vote_url = "/rate/" + this.attr('id').substring(2) + "/" + score + "/";
                var div = this.attr('id');
                $.ajax({
                  url: vote_url,
                  success: function(){
                    alert('Vote successful!);
                $('#rating').load('#rating');
                  },
                });
            }
          });
        });
    });
  </script>

使用此代码

$('#rating').load('#rating');

我将整个页面放入 div 中,当我使用时

$('#rating').load('# rating');

没有星星我只得到价值。

【问题讨论】:

    标签: jquery django html


    【解决方案1】:

    首先,复制&lt;div id="rating"&gt;&lt;/div&gt; 中的代码并将其保存到另一个文件中。可以说,

    rating.html

     <div class="movierating" id="o_{{ object.id }}">
        <span style="display:none;">{{ object.rating_vote.get_rating }}</span>
        {{ object.rating_vote.get_rating }}
    </div>
    

    现在在您的页面中,它将是,

    your.html

    ............
    <div id="rating">
        {% include 'rating.html' %}
    </div>
    ............
    

    然后,为rating.html 创建new viewnew url

    urls.py

    url(r'^rating/$', 'rating', name='rating'),
    

    views.py

    def rating(request):
        //rating object here
    
        return render(request, 'rating.html', {
            //call rating object variable here
        })
    

    最后,在你的 ajax 中

    .........
    $.ajax({
        url: vote_url,
        success: function(){
            alert('Vote successful!);
            $("#rating").load("/app_name/rating/");
        },
    });
    ...........
    

    【讨论】:

    • 还有一个问题,如何将 id 从评级对象(哪个对象被评级)发送到视图?
    • 在您的 ajax 中,您可以定义 GET 和数据以将 id 传递给您的视图
    • 我试过 $('#rating').load($.get("/rating/", {values: values}));其中值是 id,但 div 没有重新加载
    • 不,这不是传递值的正确方法。把它放在 ajax 中而不是在评级负载中
    • 如果我使用 $('#rating').load($.get("/rating/", {values: values}));我没有收到任何错误,但它没有刷新,如果我把 $.get("/rating/", {values: values}) 放在 ajax 中,我得到 500 INTERNAL SERVER ERROR, "Key 'values' not found在 "中。我想不通
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多