使用FormData的XHR请求正在POST一个空数组

4

我正在开发自己的版本这个

所有功能都能正常工作,只是POST的数值为空。PHP侧的var_dump显示为空数组。出了什么问题?

function readfiles(files)
{
    console.log('Reading Files...');
    console.log(files);
    console.log("There are " + files.length + " elements to this array.");

    var formData = new FormData();
    formData.append('file', files[0]);
    console.log(formData);

    console.log("Posting XHR request...");
    // now post a new XHR request
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/devnull.php',false);

    console.log("sending data...");
    console.log(formData);
    xhr.send(formData);
}

$(document).ready(function(e) {
    $("#holder").on('dragenter',function(e) {
        e.preventDefault();         
        $(this).addClass('hover');
    });
    $("#holder").on('dragleave',function(e) {
        e.preventDefault();         
        $(this).removeClass('hover');
    });
    $("#holder").on('dragover',function(e) {
        e.preventDefault();         
        if(!($("#holder").hasClass('hover')))
            $("#holder").addClass('hover');
    });
    $("#holder").on('drop',function(e) {
        e.preventDefault();
        console.log(e.originalEvent.dataTransfer.files);
        $(this).removeClass('hover');
        readfiles(e.originalEvent.dataTransfer.files)           
        return false;
    });
});

Firebug告诉我,数组中有一个元素:

文件列表 { 0=文件, 长度=1, 项=item(), 更多...}

但是在将其附加到FormData对象后,我得到了以下结果:

FormData { append=append()}

PHP端的最终var_dump显示如下:

<pre>array(0) {
}
</pre>

4
我的问题是我一直在查看 $_POST,而应该查看的是 $_FILES。谢谢EE... http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/Jquery/Q_28327900.html - DrDamnit
1个回答

0
使用此代码来显示文件数据:

<?php var_dump($_FILES);?>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接