我在jQuery中生成了下一个表单:
$('.content').append('
<form name="make_new_model_release" enctype="multipart/form-data">
<input data-validate="validate" type="text" name="new_model_release_title" placeholder="Enter new model release title" />
<input type="file" name="newModelReleaseFile" id="newModelReleaseFile" />
<input type="submit" value="Create new model release" />
</form>');
服务器端简单:
var_dump($_FILES);
AJAX代码:
var data = form.serialize();
$.ajax({
type: 'POST',
dataType: 'json',
url: formurl,
data: data,
beforeSend: function(data) {
form.find('input[type="submit"]').attr('disabled', 'disabled');
},
success: function(data) {
console.log(data);
},
complete: function(data) {
form.find('input[type="submit"]').prop('disabled', false);
}
});
提交$ _FILES数组后为空。
file_uploads = On | upload_max_filesize = 128M |的post_max_size = 128M
允许临时文件夹进行读写
我试图让data: new FormData(formId)
- 没有改变,$ _FILES数组是空的。
答案 0 :(得分:1)
如果你使用jQuery('#dailyActivity').serialize()
,
它不适用于<input type'file'>
看看这个jsFiddle 不起作用
和这一个.serialize()
来自文件选择元素的数据未被序列化。
请查看此https://stackoverflow.com/a/8758614/3425489
在你的情况下试试这个
要发送<input type'file'>
,您可能需要尝试
var formData = new FormData($('form')[0]);
或指定formdata的确切数据
var formData = new FormData();
// Append your other Data
formData.append('newModelReleaseFile', $('input[type=file]')[0].files[0]);
你的ajax电话将是
$.ajax({
type: 'POST',
url: formurl,
data: formData,
// THIS MUST BE DONE FOR FILE UPLOADING
contentType: false,
processData: false,
beforeSend: function(data) {
form.find('input[type="submit"]').attr('disabled', 'disabled');
},
success: function(data){
console.log(data);
},
complete: function(data) {
form.find('input[type="submit"]').prop('disabled', false);
}
});