【问题标题】:$_FILES[] is empty in jQuery generated form$_FILES[] 在 jQuery 生成的表单中为空
【发布时间】:2017-06-01 11:57:41
【问题描述】:

我在 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数组为空。

  1. 我检查了 php.ini

file_uploads=开启 | upload_max_filesize=128M | post_max_size=128M

  1. 临时文件夹允许读写

  2. 我尝试创建 data: new FormData(formId) - 没有任何改变,$_FILES 数组为空。

【问题讨论】:

  • 我看不到你的formId
  • 我强烈推荐read this。我用它通过 ajax 上传文件,效果很好。

标签: php jquery ajax forms upload


【解决方案1】:

如果你使用jQuery('#dailyActivity').serialize()
它不适用于&lt;input type'file'&gt;
看看这个jsFiddle 不起作用

还有这个.serialize()

文件选择元素中的数据未序列化。

看看这个https://stackoverflow.com/a/8758614/3425489

在你的情况下试试这个

要发送&lt;input type'file'&gt;,您可以试试这个

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);
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 2011-08-20
    • 2011-12-24
    • 2011-03-02
    相关资源
    最近更新 更多