javascript - Ajax图片上传注意事项

标签 javascript php jquery ajax

我想我已经睡了,找不到我的错误。感谢您提前发表这篇短文并提供帮助。

我的 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 因为您的 postfiles 数组中不包含 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/

相关文章:

javascript - 如何从传入的函数 var 中分配一个 var?

javascript - 在函数内使用 if...else 语句很困难

javascript - 此 jQuery getJSON AJAX 调用的回调方法存在问题

php - 基于 Linux 的 MS Office 缩略图生成

javascript - 使用 jQuery 计算字符/短信

javascript - jquery - html 表中的动态内容无法被 .innerHtml 代码识别(JS/JQuery)

javascript - Joomla com媒体图像选择对象[object Object]的属性 '$'不是一个函数index.php

PHP MySQL : Query with Less Than AND Greater Than

php - 在图像旁边环绕文字

jquery - Bootstrap 4.0.0 的 Jquery 兼容版本是什么