2014-09-23 124 views
0

我想我已经睡了,找不到我的错误。感谢您为这篇短文发表的意见,并感谢您的帮助。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 ... 

谢谢你的帮助,今天晚上我失明了。

+1

很难说,但我倾向于认为这是你的JS失败。你可能也想用这个代替 '$ ext = pathinfo($ _ FILES ['avatar'] ['name'],PATHINFO_EXTENSION); $ file_up_size = $ _FILES ['avatar'] ['size']; $ file_name = md5(uniqid(rand(),true)); $ add ='../assets/images/avatars/'。 $ FILE_NAME。 “” 。$ EXT; $ add ='../assets/images/avatars/'。 $ file_name;' - 否则,你不会得到正确的文件扩展名。 – 2014-09-23 18:33:19

回答

3

您的$.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); 
     } 
    }); 
}); 
+0

仍然得到相同的错误和这个惊人的链接avatarUpload.php?[object%20FormData] – Webice 2014-09-23 18:59:36

+1

@Webice javacsript是不是问题,然后,添加错误报告到您的PHP脚本,直到你找到呃逆,如什么弗雷德 - 如上所述在评论中。 – Ohgodwhy 2014-09-23 19:00:23

+0

我改变了这一点 – Webice 2014-09-23 19:01:42