这是我的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数组为空。问题在哪里?
答案 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>