jquery - 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 表单没有运行。但是,如果我将其设置var
为request.POST['msg']
(默认提交的 var)它工作正常。
为什么默认提交仍在发生,我该如何停止它?
解决方案
如果您想通过 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(){
}
}
推荐阅读
- python - 32位和64位python版本的exe之间的区别
- python - Pandas 大步切行
- arrays - 传递给模型的 Numpy 数组列表不是模型预期的大小
- tensorflow - 通过源代码安装 TensorFlow 与使用 pip 有什么区别?
- google-app-engine - java.lang.NoClassDefFoundError: java.lang.reflect.Parameter 是一个受限类
- kubernetes - 有没有更好的方法来等待 Kubernetes 作业完成?
- wpf - 如何使用 Unity 容器在 Prism 7 中设置不同的生命周期管理器
- go - Cookie 不会在同一域的不同页面之间持续存在
- docker - 如何在垃圾收集之前恢复私有 docker 注册表中已删除的 docker 映像标签?
- r - 在 data.frame 中按组删除尾随 NA