【发布时间】:2015-03-23 03:42:46
【问题描述】:
在过去的几个小时里,我一直在试图弄清楚如何通过 ajax 上传文件,但一无所获。
代码如下: HTML:
<form action="" method="post" id="uploadForm" enctype="multipart/form-data">
<input type="file" name="image" id="image">
<input type="submit">
</form>
JS:
<script>
jQuery(document).ready(function(){
jQuery('form#uploadForm').on('submit', function(e){
e.preventDefault();
var file = jQuery('#image')[0].files[0];
var form_data = new FormData( jQuery("form#uploadForm")[0] );
form_data.append( 'image', file );
jQuery.ajax({
url: 'index.php?a=do',
type: 'POST',
processData: false,
contentType: false,
cache: false,
data: form_data,
success: function(response) {
console.log(response);
},
});
return false;
});
});
</script>
PHP:
<?php
$a = isset($_GET['a']) ? $_GET['a'] : '';
if($a <> '') {
echo "result - ";
var_dump($_POST);
die();
}
?>
结果我得到一个空数组,但是如果我将文件字段留空,那么我得到:
result - array(1) {
["image"]=>
string(9) "undefined"
}
我已经尝试过 serialize()、serializeObject()、serializeArray()、$.param 并且每次我在控制台中收到“未定义函数”错误。
我在 stackoverflow 上遇到了几十个类似的问题,但没有任何帮助。我尝试使用 $.post 而不是 $.ajax 并且包含 form_data 的“数据”字段为空。
我需要这个用于 Wordpress 插件,并且我试图避免在上传部分使用 3rd 方 JS 插件。
【问题讨论】: