如何使用ajax函数发送表单而不刷新页面,我缺少什么?是否必须使用rest-framework?

如何使用ajax函数发送表单而不刷新页面,我缺少什么?是否必须使用rest-framework?,第1张

如何使用ajax函数发送表单而不刷新页面,我缺少什么?是否必须使用rest-framework?

完全检查您的代码并与OP进行深入讨论之后。我设法解决了运营问题。

  1. 删除后,

    HttpResponseRedirect
    我首先将其转换为
    JsonResponse
    并进行了相应的更改。

    response_data = {      "status":200, "message":"comment_stored",       "parent": True,       "parent_id": parent_comment.id,      "comment_count": parent_comment.comment_count()  }

    return JsonResponse(response_data)

  2. 下一步是简单地执行DOM *** 作以显示从响应中获取的数据。但是事实证明,这比预期的要复杂。因此,为简化起见,我将模板分为两部分-一部分将是主要部分,另一部分仅包含注释的HTML。

使用,

django.template.loader.render_to_string
我生成了所需的HTML以显示注释,并与响应一起以JSON中的字符串形式发送。

    html = render_to_string('main/child_comment.html', {'comment': [new_comment],  'user': request.user,  'comment_form':comment_form  })response_data = {          "status":200, "message":"comment_stored",          "comment":html,          "parent": True, "parent_id": parent_comment.id,         "comment_count": parent_comment.comment_count()     }return JsonResponse(response_data)
  1. 最后,在主要在DOM *** 作脚本和一种表单模型中进行了较小的更改(与当前问题无关)之后,代码按预期工作。

    $('form').submit(function(e) {e.preventDefault();if ($(this).parents("tr") != 0) {    parent_id = $(this).parents("tr").attr("id").split("_")[1];    data_str = $(this).serialize() + "&parent_id=" + parent_id;} else {    data_str = $(this).serialize();}$(this).parents("tr").attr("id").split("_")[1]$.ajax({    type: 'POST',    url: '{% url 'comment_create' %}',    data: data_str,    success: function(json) {        alert(json.message);        if (json.status == 200) { var comment = json.comment.trim(); var user = json.user; if (!json.parent) {     $(comment).insertBefore('.table tr:first'); } else {     $(comment).insertBefore('#comment_' + json.parent_id + ' #child_comment:first');     $(".replies").text("답글" + json.comment_count + "개 모두 보기"); }        }    },    error: function(response) {        alert("some error occured. see console for detail");    }});

    });

  2. 奖金: 我们还遇到了另一个小问题,但我在这里不再讨论。我为此写了一个单独的答案。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5631851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存