- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试上传以表单形式发送的文件。我正在尝试使用 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 正在做。无论如何,谢谢大家的回答!
最佳答案
您不能使用纯 Ajax/jQuery 来完成此操作,但您可以结合主流浏览器的所有最新版本都支持的 JavaScript FormData 对象来完成此操作。
可以在这里找到一个非常简单的 jQuery 示例:https://coderwall.com/p/p-n7eq
更详细的纯 JavaScript,可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objects?redirectlocale=en-US&redirectslug=Web%2FAPI%2FFormData%2FUsing_FormData_Objects
关于php - 如何使用ajax查看以表单形式上传的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18706857/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!