jQuery - 使用ajax的DataTables上传文件
问题描述:
我正在使用插件datatable
来显示用户列表。在这个列表中,我需要能够上传新文件。jQuery - 使用ajax的DataTables上传文件
我想使用ajax尝试发送数据到php。如果我发送值没有问题,但我的PHP脚本工作,我无法从文件中获取数据。
为了上传文件,我使用了我为另一个工作正常的脚本编写的脚本,所以我认为这里的问题是DataTable
,它不能识别我的表单数据。
任何人都知道如何做到这一点?
JS
$('#example .fileinput-upload-button').on('click', function(event) {
var td = $(this).closest("td");
var parentTD = td.parent();
var form = $(this).closest("form");
var url = "example/upload.php?type=photo"
var data = new FormData(form);
alert(form);
$.ajax({
type: "POST",
url: url,
data: data,
mimeType: "multipart/form-data",
contentType: false,
cache: false,
dataType: "html",
processData: false,
success: function(data) {
alert(data);
}
});
PHP
$type = filter_input(INPUT_GET, "type");
$target_dir_header = $includesDir . "dashboard/resources/header_pic/";
$dataHeader = $_FILES['input7'];
$dataHeader_ext = explode('/', $dataHeader['type']);
$imageFileType_header = $dataHeader_ext[1];
$target_file_header = $target_dir_header . basename("header" . $imageFileType_header);
echo $type . " - " . $imageFileType_header;
答
jQuery代码更改为:
var td = $(this).closest("td");
var parentTD = td.parent();
var url = "example/upload.php?type=photo"
var form = $(this).closest("form").get(0);
$.ajax({
type: "POST",
url: url,
data: new FormData(form),
mimeType: "multipart/form-data",
contentType: false,
cache: false,
dataType: "html",
processData: false,
success: function(data) {
alert(data);
}
});
你的问题解释here
jsFiddle中没有'form'标签。 –
是的,只是在输入前 – SNos
你是对的,对不起。见[这个答案](http://*.com/questions/28872872/error-in-sending-form-file-with-form-using-ajax)。尝试'var data = new FormData(); data.append('file',$('input [type = file]',form)[0] .files [0]);'而不是。 –