从ajax访问文件上载字段

时间:2014-07-12 17:35:03

标签: javascript php jquery ajax

我在访问文件上传字段时遇到问题

//HTML
<input type='file' name='images' id="images" multiple>
//////////////////

    $('.bt-add-com').click(function(){
        var formdata = new FormData();
        var sessionID = 8;
        var theCom = $('.the-new-com');
        var theName = $('#name-com');
        var theMail = $('#mail-com');
        var theFile = formdata.append("images", sessionID);



        if( !theCom.val()){ 
            alert('You need to write a comment!'); 
        }else{ 
            $.ajax({
                type: "POST",
                url: "ajax/add-comment.php",
                data: 'act=add-com&id_post='+<?php echo $id_post; ?>+'&name='+theName.val()+'&email='+theMail.val()+'&comment='+theCom.val()+'&file='+formdata.append("images[]", sessionID),
                success: function(html){
                    theCom.val('');
                    theMail.val('');
                    theName.val('');
                    $('.new-com-cnt').hide('fast', function(){
                        $('.new-com-bt').show('fast');
                        $('.new-com-bt').before(html);  
                    })
                }  
            });
        }
    });

    ////RESULT
    array (size=6)
    'file' => string 'undefined' (length=9)

问题是当我使用formdata访问文件上传字段时,如下面的代码。它显示未定义的值。无法上传文件详情

1 个答案:

答案 0 :(得分:0)

您正在获取表单数据对象并将其附加到字符串。那不行。

不要尝试构建一个字符串以传递给data,使用FormData API来所有你的字段,然后传递FormData对象本身。

您还需要从输入而不是数字8附加文件数据。

formdata.append("images", sessionID);
formdata.append("images[]", sessionID)

请勿使用imagesimages[]。如果您使用的是PHP,那么只使用images[]

请勿使用sessionID,请使用该文件。

formdata.append("images[]", document.getElementById('images').files[0]);