问题描述
我有以下javascript。
$("#CsvForm").unbind('submit').on('submit',function( event ){
var formData = new FormData($(this[0]));
$.ajax({
url: 'some url',
data: formData,
processData: false,
contentType: false,
type: 'POST',
success: function(json){
console.log('ajax do something');
ajax = true;
},
error: function(data) {
console.log("failed");
}
});
});
我的html表单如下所示:
<form action="/teams/16/import_players" method="POST" id="CsvForm" enctype="multipart/form-data"><input type="hidden" name="csrfmiddlewaretoken" value="E2lRbOD6hRQixJBNfsDL3Wamo4VzVnDj">
<div class="modal-body">
<p><label for="id_csv_file">Upload CSV File:</label> <input class="form-control input-lg" id="id_csv_file" name="csv_file" placeholder="First Name *" required="true" type="file"></p>
</div>
<div class="modal-footer ">
<button type="submit" class="btn btn-warning btn-lg" style="width: 100%;">
Upload
</button>
</div>
</form>
问题是我的formData返回并且对象为空,并且提交时出现了JavaScript异常:
“未捕获的TypeError:非法调用”
请帮助。
1楼
Braj
1
2015-07-30 17:14:23
试试这个:
var fileData = $("#id_csv_file").prop("files")[0];
var formData = new FormData();
formData.append("file", fileData);
这是完整的代码。
2楼
Zishan Mohsin
0
2015-07-30 17:40:28
这可能会解决您的问题:
$("#CsvForm").unbind('submit').on('submit',function( event ){
var formData = new FormData();
formData.append("nameUsedOnServer", document.getElementById("id_csv_file").files[0]);
$.ajax({
url: 'some url',
data: formData,
processData: false,
contentType: "multipart/form-data",
type: 'POST',
success: function(json){
console.log('ajax do something');
ajax = true;
},
error: function(data) {
console.log("failed");
}
});
});