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/