![](/img/trans.png)
[英]How to send specific data from Django Form with POST request in AJAX?
[英]How to populate a django form in a POST request with data from an ajax call?
用户单击“提交”按钮后,我通过ajax调用发送表单数据,然后在我的视图中处理此请求,但是表单为空。 如何填写表格?
这是我的代码:
我的JS文件:
var csrftoken = getCookie('csrftoken'); //getCookie is a csrf_token generator
var form = $(this).closest('form')
$.ajax({
url: form.attr("action"),
data: { // if I change this line to data: form.serialize(), it works fine!
csrfmiddlewaretoken : csrftoken,
form: form.serialize(),
},
type: form.attr("method"),
dataType: 'json',
success: function (data)
{
//Do a bunch of stuff here
}
})
我的看法:
def task_edit(request, pk):
task = get_object_or_404(Task, pk=pk)
if request.method == 'POST':
task_form = NewTaskForm(request.POST) # This is empty!
else:
task_form = NewTaskForm(instance=task) # This for populating the edit modal, works fine!
我没有执行data: form.serialize()
因为我需要使用ajax请求发送其他数据。 我该如何工作?
您可以编写如下:-
$form_data = $("#idofform").serialize();
然后在ajax中
data : $form_data+'&key=value',
您可以使用https://www.formkeep.com之类的服务来使用AJAX捕获表单数据。
如果您已经在使用JavaScript框架,想要添加验证逻辑,或者不想在用户提交表单后重定向用户,那么这可能是个好主意。
您可以使用标准AJAX请求提交给FormKeep。 为确保请求不会导致重定向,请确保将Accept标头设置为application / javascript。
给出以下形式:
<form id="newsletter-signup" action="http://formkeep.com/f/exampletoken" method="POST" accept-charset="UTF-8">
<input type="hidden" name="utf8" value="✓">
<input name="email" type="email">
<input value="Submit" type="submit">
</form>
这是一个如何使用jQuery提交表单的示例:
$(function() {
$('#newsletter-signup').submit(function(event) {
event.preventDefault();
var formEl = $(this);
var submitButton = $('input[type=submit]', formEl);
$.ajax({
type: 'POST',
url: formEl.prop('action'),
accept: {
javascript: 'application/javascript'
},
data: formEl.serialize(),
beforeSend: function() {
submitButton.prop('disabled', 'disabled');
}
}).done(function(data) {
submitButton.prop('disabled', false);
});
});
});
而已。 一旦在FormKeep中安全地捕获了数据,您就可以轻松地存储,管理数据或将其与数以千计的其他系统(例如Google Docs,Hubspot和Mailchimp)连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.