ajax页面跳转404,Django Ajax表单提交错误地重定向到另一个页面

小编典典

终于我做到了!感谢上帝!非常兴奋!

我以前的代码中有三个主要问题。

首先:由于ajax会将news_pk发布到视图 update_comment

,所以我不需要在此视图的url和template(在

tag的url和ajax的url中)中添加news_pk

,所以我删除了它们或数据仍会通过Form,但不会通过Ajax。

第二:我的绑定不正确,我在表单上有单击处理程序,应该是提交处理程序。如果将其绑定到按钮,则可以使用单击处理程序。但是对于这一部分,我仍然有些困惑,在按钮顶峰方式和表单提交方式之间。

第三个问题是我误认为’comments’和’comment’。’comment’是的name属性,forms.py通过该属性获取数据。

注释是由ajax定义的, var comments=$("#js-pl-textarea").val(),因此在视图中我需要使用comments

= request.POST.get("comments", "")但不需要注释,这就是“发布失败”的原因。

以下是我的代码。

这是ajax:

$("#comment_form").submit(function(){

var comments = $("#js-pl-textarea").val()

$.ajax({

cache: false,

type: "POST",

url:"{% url 'operation:update_comment' %}",

data:{'news_pk':{{ news.pk }}, 'comments':comments},

async: true,

beforeSend:function(xhr, settings){

xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}");

},

success: function(data) {

if(data.status == 'fail'){

if(data.msg == '用户未登录'){

window.location.href="login";

}else{

alert(data.msg)

}

}else if(data.status == 'success'){

window.location.reload();//refresh current page.

}

},

});

return false;

});

这是我的udate_comment视图:

@login_required

def update_comment(request):

news_pk = request.POST.get("news_pk", 0)

comments = request.POST.get("comments", "")

if int(news_pk) > 0 and comments:

news_comments = NewsComments()

news = News.objects.get(id=int(news_pk))

news_comments.news = news

news_comments.comments = comments

news_comments.user = request.user

news_comments.save()

return HttpResponse('{"status":"success", "msg":"添加成功"}', content_type='application/json')

else:

return HttpResponse('{"status":"fail", "msg":"添加失败"}', content_type='application/json')

这是模板中的表格:

{% csrf_token %}

非常感谢大家的回覆!有了您的回覆,我逐步找出了这些问题!

2020-07-26

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值