使用AJAX发送文件,普通Javascript:没有发送。 POST数据为空

时间:2013-12-17 17:27:58

标签: javascript php ajax

这是我的HTML代码:

<input type="file" id="file" name="file" />
<input type="button" value="Send the file" onclick="inviaFileAJAX()" />

这是我的AJAX功能:

function inviaFileAJAX() 
{
    if(!document.getElementById("file").value) 
    {
        alert("No file selected");
        return false;
    }

    var file = document.getElementById("file");
    var formData = new FormData();
    formData.append("file", file.files[0]);
    var xmlhttp;

    if (window.XMLHttpRequest) 
    {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } 
    else 
    {
        // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function() 
    {
        if (xmlhttp.readyState == 4 && `xmlhttp.status == 200)` 
        {
        alert(xmlhttp.responseText);
        }
    }

    xmlhttp.open("POST", "invia_file.php", true);
    xmlhttp.setRequestHeader("Content-Type", "multipart/form-data");
    xmlhttp.send(formData);
}

如果在php中我写

var_dump($_POST);

在AJAX功能的警告中:

alert(xmlhttp.responseText);

我得到未定义的引用因为旧的:

$_FILES["file"]["name"]

未找到。 POST数组为空。问题在哪里?

1 个答案:

答案 0 :(得分:-1)

最常见的方法是假冒ajax&#39;该方法包括在页面中创建一个平躺的iframe并将表单目标指向它。

前:

<form enctype="multipart/form-data" action="upload.php" target="myInvisibleFrame" method="post">
<input type="file" name="myfile"/>
<button type="submit">Upload</button>
</form>

<iframe id="myInvisibleFrame" style="display: none;" onload="alert('complete!');"></iframe>