我想我已经睡了,找不到我的错误。感谢您提前发表这篇短文并提供帮助。
我的 JavaScript
$("#avatarImage").change(function() {
$("#avatar").html('<img src="assets/images/loader.gif" alt="">');
$.post( 'ajax/avatarUpload.php', function( data ) {
alert(data);
});
});
我的表格
<form enctype="multipart/form-data" method="post" action="ajax/avatarUpload.php" id="avatarUpload">
<span class="btn btn-teal btn-file btn-sm"><span class="fileupload-new"><i class="fa fa-pencil"></i></span><span class="fileupload-exists"><i class="fa fa-pencil"></i></span>
<input type="file" name="avatar" id="avatarImage">
</span>
</form>
我的 PHP 代码
$file_up_size = $_FILES['avatar']['size'];
$file_name = md5(uniqid(rand(), true));
$add = '../assets/images/avatars/' . $file_name;
if(!move_uploaded_file($_FILES['avatar']['tmp_name'], $add)){
echo 'FEHLER';
} else {
//database crap
}
我的错误
Notice: Undefined index: avatar in ...
感谢您的帮助,我今晚失明了。
最佳答案
您的$.post()
正在发布到表单,但它没有向该表单提供任何数据。这会导致 undefined index: avatar
因为您的 post
在 files
数组中不包含 avatar
的索引。要解决此问题,请通过构造 FormData
对象在 POST
中传递图像。此外,ajax 包装器 $.post()
不允许您设置某些选项,因此我们需要将其解开并使用 $.ajax()
代替。
$("#avatarImage").change(function() {
$("#avatar").html('<img src="assets/images/loader.gif" alt="">');
var fd = new FormData()
fd.append('avatar', $('#avatarImage')[0].files[0]);
$.ajax({
url: 'ajax/avatarUpload.php',
type: 'POST',
data: fd,
contentType: false,
processData: false,
success: function(data){
console.log(data);
}
});
});
关于javascript - Ajax图片上传注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26002049/