javascript - 使用 processData 和 contentType 时 Ajax 响应为 0。输入 ='file[]'

标签 javascript php jquery ajax

html:

<input id="fileSelect" type="file" name="files[]" multiple="multiple" accept="image/*" />

js:

alert( filesArray );
3 three images.// 
// [object File],[object File],[object File]

// new FormData object.
var formData = new FormData();
formData.append( 'files[]', filesArray );

jQuery.ajax
({
    url: ajaxurl, // uploadfile.php
    type: "POST",
    data:   {
                action: 'auto_post',
                form_data: formData
    },
    processData: false,
    contentType: false,
    success: function( data )
    {
       alert( data );
    },
    error: function( data )
    { }
});

当我不使用时:

processData: false,
contentType: false,

我得到:(错误)

TypeError: 'append' called on an object that does not implement interface FormData.

现在怎么办?我需要使用 ajax 将 formData 发送到 php 服务器端。

上传文件.php

我需要像这样访问:

$_FILES["files"]["name"];

Ajax 数据从这里获取:

// Ajax Funtion.
function aap_auto_post()
{
    echo $_FILES['files']['name'];
    die();
}
add_action( 'wp_ajax_auto_post', 'aap_auto_post' );
add_action( 'wp_ajax_nopriv_auto_post', 'aap_auto_post' );

最佳答案

ajax 请求中发送的所有值都必须附加到 FormData 对象,而不仅仅是文件。此外,文件必须单独添加。

var formData = new FormData();
for (var i = 0; i < filesArray.length; i++){
    formData.append( 'files[]', filesArray[i]);
}
formData.append( 'action', 'auto_post');
...
data: formData,

关于javascript - 使用 processData 和 contentType 时 Ajax 响应为 0。输入 ='file[]',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28002627/

相关文章:

php - 准备好的语句 + MySQL(7 天统计)

javascript - 在 jQuery 中检测滚动结束

php - 根据mysql中的不同条件选择两列

php - predis SCAN 比 KEYS 慢

javascript - 动态创建的文本框中的值求和

javascript - 如何使用jquery获取表内文本框的值?

jquery - 如何在 jQuery 中更改元素文本、暂停和重置原始文本

javascript - 在 javascript/Angular 中扩展对象

javascript - 在鼠标悬停系统上填写 JQuery 5 星级评级上以前的星星

javascript - Canvas 未附加到列表中