首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX对象更新列表

AJAX对象更新列表
EN

Stack Overflow用户
提问于 2017-04-06 15:40:58
回答 1查看 836关注 0票数 0

有人能帮我说我做错了什么吗?

在我的django项目中,我有product_detail页面,其中包含注释部分。我正在尝试更新评论列表后,成功地添加了新的评论与AJAX。不幸的是,它更新了所有页面。我有点不舒服,需要建议。我只需要更新评论列表,而不是所有页面。

product_detail.html:

代码语言:javascript
复制
<div class="card">
   <div class="card-block">
      <table id="comment-table">
         <thead>
            <tr>
               <th>Author</th>
               <th>Date</th>
               <th>Comment Text</th>
            </tr>
         </thead>
         <tbody>
            {% include 'project/comment_list.html' %}
         </tbody>
      </table>
   </div>

   <div class="card-footer">
   <form method="post" class="comment-form" id="comment-form" action="{% url 'project:comment_add' project_code=project.code product_code=product.code %}">
      {% csrf_token %}
         {% for field in form %}
         <div class="form-group{% if field.errors %} has-error{% endif %}">
            {% render_field field class="form-control" %}
            {% for error in field.errors %}
                 <p class="help-block">{{ error }}</p>
            {% endfor %}
         </div>
         {% endfor %}
         <button type="submit" class="btn btn-primary">Send</button>
      </form>
   </div>
</div>

views.py:

代码语言:javascript
复制
def comment_add(request, project_code, product_code):
    data = dict()
    project = get_object_or_404(Project, pk=project_code, status='open')
    product = get_object_or_404(Product, pk=product_code)
    if request.method == 'POST':
        form = CommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.author = request.user
            comment.save()
            product.comments.add(comment)
            data['form_is_valid'] = True
            data['html_comment'] = render_to_string('project/comment_list.html', {'product': product})
            form = CommentForm()
        else:
            data['form_is_valid'] = False
    else:
        form = CommentForm()
    context = {'project': project, 'product': product, 'form': form}
    return render(request, 'project/product_detail.html', context)

js:

代码语言:javascript
复制
$(function () {
    var saveForm = function () {
        var form = $(this);
        $.ajax({
            url: form.attr("action"),
            data: form.serialize(),
            type: form.attr("method"),
            dataType: 'json',
            success: function (data) {
                if (data.form_is_valid) {
                    $("#comment-table tbody").html(data.html_comment);
                }
                else {
                    $("#comment-form").html(data.html_comment_form);
                }
            }
        });
        return false;
    };

    $("#comment-form").on("submit", ".comment-form", saveForm);
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-06 15:45:17

问题是type=“提交”本机刷新新页面。你必须停止提交表格。试着做这样的事情:

代码语言:javascript
复制
$("#comment-form").submit(function(event) {

      /* stop form from submitting normally */
      event.preventDefault();


     // here your ajax code
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43259791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档