=====再次更新====(如果有人关心的话!)
我之前发布的解决方案由于某种原因停止工作。我在 ajax 请求中包含了 beforeSend 并将验证表单的 js 部分粘贴到其中。现在就像一个魅力!
$('#form').on('submit', function(e) {
e.preventDefault(); //prevents page refresh
$.ajax({
type: "post",
beforeSend: function(){ // check that form is complete
},
url: "client_config_send2.php",
data: $(this).serialize(),
success: function(data){
alert('Thank you'); hide_request();window.location = "#top";
}
});
});
EDIT
请参阅下面我的答案,使用 2 .preventDefault!
我已经阅读了很多页面/示例,但由于某种原因我无法让它在“我的”表单上工作。
我只是尝试提交表单,而不刷新页面或打开新页面/选项卡来获取确认消息。
表格:
<form id="form" name="Configurator" method="post" action="">
.... //Client configures his product, display an image if they choose, and request a quote.
<button id="submit_button" type="submit" name="Submit" >Request</button>
</form>
client_config_send2.php 可以工作,它只是从表单中提取一堆参数(配置、联系信息)并将其放入电子邮件中。在我尝试集成 ajax 之前,这部分工作正常。
JS:
$('form').on('submit', function(e) {
e.preventDefault();
if(!validateForm(this)){
return true;
}
$.ajax({
type: "post",
url: "client_config_send2.php",
data: $(this).serialize(),
done: function(data){
alert("Thank you, we will get back to you shortly");
}
});
})
</script>
validateForm() 函数也可以工作,它检查配置是否有效,电子邮件/联系信息是否完整等。
此时,validateForm 起作用:如果信息丢失,则会弹出警报。但是,当 validateForm() 返回 true 时,表单不会提交,什么也不会发生。
我尝试过 success 而不是 did,在 JS 中尝试了 return false 而不是 true,以及我在网上找到的许多其他东西,但我迷失了。以前从未使用过 AJAX,所以我对这种语言的微妙之处没有 100% 的信心!
提前致谢!