我正在尝试上传以表格形式发送的文件。我正在尝试使用 php,但在 html 和 php 之间我使用 JS 和 Jquery 和 ajax(因为我不希望页面重新加载)。我遇到了 $_FILES 的问题。
就是这样,我正在使用带有 javascript 操作 (action="javascript: SendPresupMail();") 的表单(包含文件输入)。
在那个 JS 函数中,我使用了一点 Jquery 和 ajax,在其中,有一个对 php 函数的调用。
问题是在那个 php 函数中 $_FILES 是空的,我需要上传表单中的文件发送。
这是代码:
HTML 表单,调用 JS:
<form action="javascript: sendPresupMail();" method="post" id="formId" enctype="multipart/form-data">
<input type="text" id="mail" name="mail" />
<input type="file" id="file_selected" name="file_selected" />
<input type="submit" value="Submit" />
JS 函数,并使用 AJAX 和 JQUERY 调用 PHP:
function sendPresupMail() {
$.ajax({
url: 'remote.php',
type: 'post',
data: {
'w': 'sendPresupMail',
'mail': document.getElementById('mail').value
},
success: function(data) {
if(data != "ok" && data != ""){alert(data);}
if(data == "ok"){alert("mail send.");}
}
});
}
最后,PHP代码:
private function sendPresupMail(){
$filename = ($_FILES['file_selected']['name']);
...
...
}
那里的代码无关紧要,问题是 $filename 没有收到任何东西,因为 $_FILES 它是空的(我用 var_dump 检查它,它是空的)。所以我不能上传文件,我该怎么办?
解决了
这是解决方案:实际上它比我想象的要简单得多。首先,我创建了一个 iframe,所以现在所有的表单、javascript、ajax 等都在 iframe 中进行。所以看起来页面没有刷新,因为 iframe 正在这样做。无论如何,谢谢大家的回答!