jQuery获取数据并在HTML上显示

时间:2019-05-19 08:29:21

标签: jquery html ajax

我在一个项目的注释部分列出了用户上传的每张图片。 jQuery用于切换视图评论按钮并显示与该图片相关的评论。 Ajax请求从数据库中获取数据。

现在的问题是,只有第一张图片似乎显示了评论,而其余的则没有。

jQuery

    var array1, array2, iden, value, repeat;

    function fetching(iden) {
        value = iden.data("id");
        $.ajax({
            url: "{% url 'fetchertwo' %}",
            type: "GET",
            data: {
                'search': value
            },
            dataType: 'json',
            success: function(data) {
                array1 = data.content;
                array2 = data.author;
                $.each(array1, function(i, item) {
                    iden.find($(".paratwo")[i]).html( array2[i]+'\n')
                    console.log(array1[i], array2[i]);
                });
            }
        });
     }

     $('.headingone').click(function(event) {
         event.preventDefault();
         iden = $(event.target).next()
         $(this).next().toggle("slide");
         fetching(iden)
     });

     $('.formtwo').on("submit", function(event) {
         event.preventDefault();
         console.log(iden)
         var formData = $(this).serialize();
         $.post("/usercreation/picomment/" + value, formData,
                function(response) {
                    fetching(iden)
                });
         this.reset();
     });

HTML

<a style="text-decoration:blink;" href="" class="headingone" data-id={{item.pk}} >View Comments</a>

<div class="menu" data-id={{item.pk}} style="display:none">
    {% for i in item.piccomments.all %}
        <p class="paratwo" style="margin:0px;"></p>
    {% endfor %}
    <form class="formtwo" method="post" action="">
        {% csrf_token %}
        <div class="form-group">
            <div class="row">
                <div class="col-6">
                    <input data-id={{item.pk}} autocomplete="off"  type="text" name="commentadd" class="form-control commentadd" placeholder="Add Comment">
                </div>
                <div>
                    <input class="btn btn-outline-dark" type="submit" name="submit" value="Submit">
                </div>
            </div>
        </div>
    </form>
</div>

1 个答案:

答案 0 :(得分:1)

使用insertBefore插入项目,然后.html()覆盖先前的内容。

为您的评论添加div:

<div id="comments">
  {% for i in item.piccomments.all %}
    <p class="paratwo" style="margin:0px;"></p>
  {% endfor %}
</div>


success: function(data) {
  array1 = data.content;
  array2 = data.author;

  const comments = [];
  $.each(array1, function(i, item) {
       comments.push('<p class="paratwo">' + array1[i] + '<br> by:' + array2[i] + '</p>');
  });
  $('#comments').html(comments.join(''));
}