繁体   English   中英

Ajax图片上传通知

[英]Ajax Image Upload Notice

我想我已经睡了,找不到我的错误。 感谢您为这篇简短的文章所提供的帮助和帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM