首页 > 解决方案 > Django jQuery preventDefault() 不起作用

问题描述

我正在尝试使用 Ajax 提交文本字段。这是表格

<form id = "msgform"  method="POST" >
    {% csrf_token %}
        <textarea  id = "msg" name = "msg" > </textarea>
        <button type="submit" >Send</button>       
</form>

这是应该阻止默认表单提交并提交 ajax 的 jQuery 和 Ajax 代码。

$(document).on('submit', '#msgform', function(e) {
    e.preventDefault();
    return false;
    $.ajax({
         type:'POST',
         url:'{{request.path}}',
         data: {
             value:$('#msg').val(),
             csrfmiddlewaretoken: '{{ csrf_token }}',
         },
  
         success: function() {    
         }
    })
})

在我的 view.py 中,我设置了一个等于 request.POST['value'] 的变量,但程序无法找到该值,因为 Ajax 表单没有运行。但是,如果我将其设置varrequest.POST['msg'](默认提交的 var)它工作正常。

为什么默认提交仍在发生,我该如何停止它?

标签: jquerydjangoajax

解决方案


如果您想通过 ajax 提交,则不需要 django 表单。只需单击按钮即可触发 ajax 功能。

<button type="button" onclick="submit()">Send</button>

上面的按钮触发提交功能。

function submit(){
    var content=$("#msg").val()
    $.ajax({
    type:'POST',
    url:'path-to-ajax-function',
    data:{
    "value":content,
    csrfmiddlewaretoken: '{{ csrf_token }}',
  },
  
  success:function(){    
  }

}

推荐阅读