我创建了一个带有文件上传进度条的表单。我使用ajaxForm来设置pre/post操作(使用ajaxSubmit did会导致进度条在短时间后消失)。上传过程结束后,我想生成一个新的网页并通过调用“sendEmail.php”发送电子邮件。问题是,我可以看到进度文件达到100%,但之后什么也没有发生。T卡住了100%
我的生成进度条的脚本:
<script>
var progress
$(document).ready(function() {
$("#submit").click(function(){
var form_data = $(this).serialize();
$("#formmail").ajaxForm({
type: "POST",
url: "sendEmail.php",
beforeSend: function() {
$("#progressBar").removeClass("hidden");
progress = "0%";
$('.progress-bar').css("width", progress);
$('.progress-bar').html(progress);
},
uploadProgress: function (event, position, total, percentComplete) {
progress = percentComplete + "%";
$('.progress-bar').css("width", progress);
$('.progress-bar').html(progress);
},
success: function (data){
console.log(data);
alert("It's OK!");
},
error: function(data){
console.log(data);
}
})
.submit();
});
});
</script>上传文件的php,在本例中仅为uploa。一旦文件正常工作,我就会移动它。
<?php
if(isset($_POST) && !empty($_FILES['fileatt']['name'])){
$tmp = $_FILES['fileatt']['tmp_name'];
?>我应该添加什么才能看到成功消息并执行url:"sendEmail.php“?
发布于 2017-08-01 19:11:48
您的此行看起来不正确
var form_data = $(this).serialize();此处this指的是您的表单提交按钮,而不是表单
此外,您应该使用FormData()而不是serialize(),因为serialize()可以在不支持FormData应用程序接口的旧浏览器中工作,例如IE < 10
改用下面的代码:
var formData = new FormData($('form')[0]);
发布于 2017-08-02 14:20:14
仔细检查您的HTML,您似乎遗漏了为输入域文件添加"name“属性。
这将不起作用
<input type="file"/>这会起作用的
<input type="file" name="file1"/>https://stackoverflow.com/questions/45435849
复制相似问题