[英]Send “form data” to AJAX call
html part html 零件
<form id="custom_form" name="custom_upload" method="POST" enctype="multipart/form-data">
<label>Choose File:</label>
<input id="in" name="csv_file" value="Add CSV" type="file" required />
<table class="opttable">
<tr>
<td>
Title<span style="color: red;">*</span>
</td>
<td>
<select id="select1" class="optselect form-control">
<option>abc</option>
<option>cde</option>
</select>
</td>
</tr>
</table>
<input type="submit" value="Submit" class="onsubmit">
</form>
javascript part javascript 零件
$('.onsubmit').on('click', function (e) {
var id = {{id}}
var fd= $('form').serialize()
console.log(fd)
$.ajax({
url: '/someview/'+id,
type: 'POST',
data: fd,
sucess: function(data) {
console.log(data);
},
error: function(err) {
console.log('err: '+err);
}
});
});
This is my code.这是我的代码。 So basically I want to pass both file and normal data in ajax call.
所以基本上我想在 ajax 调用中同时传递文件和普通数据。 I think serialize method converts form data into strings and I want to send file as well so how can achieve this.
我认为序列化方法将表单数据转换为字符串,我也想发送文件,所以如何实现这一点。
$('form').serialize()
will give you array of objects like this $('form').serialize()
会给你这样的对象数组
[
{"Name":"elementname","Value":"12"},
{"Name":"elementname2","Value":"hello"}
]
Either you can stringify the whole and send like this in您可以将整个字符串化并像这样发送
data: { "formData":JSON.stringiy(fd)}
or或者
you can convert it into simple key value and send to sever as a JSON string您可以将其转换为简单的键值并作为 JSON 字符串发送到服务器
dataToSend={}
for(var v=0; v<fd.length;v++){
dataToSend[fd["Name"]] = fd["Value"];
}
and send in data as并将数据发送为
data: { "formData":JSON.stringify(dataToSend)}
You can convert the data server side using您可以使用转换数据服务器端
import json
json.loads(request.POST.get('formData'))
You can use FormData object and append the values you want to send to server.您可以使用 FormData object 和 append 将要发送到服务器的值。
You need csrf_token if you are making a post request.如果您正在发出发布请求,则需要 csrf_token。 Store it in your html page.
将其存储在 html 页面中。 Try this:
尝试这个:
<script>
var CSRF_TOKEN = '{{ csrf_token }}';
</script>
$('.onsubmit').on('click', function (e) {
e.preventDefault();
var id = {{id}};
var formData = new FormData();
formData.append('csvFile', $('#in')[0].files[0]);
formData.append('csrfmiddlewaretoken', CSRF_TOKEN);
$.ajax({
url : '/someview/'+id,
type : 'POST',
data : formData,
processData: false,
contentType: false,
success : function(data) {
},
error: function(data){
}
});
});
In your views, you can get that file by在您看来,您可以通过以下方式获取该文件
csv_file = request.FILES.get('csvFile')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.