我在下面附上了我的php的简化版本。 我有一个带有多个输入字段+上传文件选项。
提交表单时,上传栏会启动,当达到100%时,我会看到“成功”警告,然后是“完整”警报。 (两次???) 然而,“action = sendEmail.php”形式都没有被触发而不是“url:sendEmail.php” - 我想要添加两个以查看是否有任何触发。 注意,当我删除ajaxFrom触发器“sendEmail.php”时,就会执行。
那么我做错了什么?什么应该改变,使“sendEmail.php”进行。
另外,为什么我看到成功&两次完成警报?
的 Success => complete => success => complete
基本形式:
<form id="formmail" class="form-horizontal" name="formmail" method="POST" action="sendEmail.php" enctype="multipart/form-data">
.
.
.
我尝试(当然是单独使用)提交按钮:
<input class="btn btn-sm" name='submit' type='submit' id='submit' tabindex='100' value="Submit"/>
一个简单的按钮:
<button class="btn btn-sm" name='submit' id='submit'>Submit</button>
javascript:
var progress
$(document).ready(function(){
$("#submit").click(function(){
var form_data = $("#formmail").serialize();
$("#formmail").ajaxForm({
type: "POST",
url: "sendEmail.php",
data: form_data,
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){
alert("success");
},
complete: function(xhr){
if(xhr.responseText) {
alert("complete");
}
},
})
.submit();
});
});
答案 0 :(得分:0)
您的代码有一个非常常见的问题。默认情况下,“提交”按钮((tap)
)将自动提交表单。将<input type="submit">
函数与jQuery绑定不会阻止表单提交。因此,对于每次单击“提交”按钮,click()
可能会被调用两次,一次是HTML表单提交,另一次是JS。你可能只想要其中一个。
您可以将按钮类型更改为sendEmail.php
,或在type="button"
功能中添加event.preventDefault()
。
顺便提一下,以下是您的代码的一些建议:
click()
和class
属性。