我希望在成功提交表单时显示确认(更确切地说是弹出窗口)。之前我使用Ajax来验证表单并显示弹出窗口,但现在我想实现相同的而不使用Ajax 。
在成功提交表单后调用javascript / Jquery中是否有任何事件?或者还有其他替代方案吗?
谢谢!
编辑1:
我使用的是Spring 3.0
这是详细的情景
1.用户填写表格并点击提交
2.请求将被发送到控制器(服务器端)
3.验证将在服务器端进行
4.如果存在错误,我将使用Spring验证来显示它并转到步骤1
5.否则成功提交表格并显示弹出窗口
6.用户点击弹出窗口重定向到其他页面后。
编辑2:
我完全同意Ajax是正确/最好的方法,我已经使用Ajax实现了它。但客户希望使用非ajax方法,我不能超越他的话。
答案 0 :(得分:2)
没有Ajax?没问题 - 让我们回到过去网络过去的工作方式; - )
由于我得到你不想刷新当前页面,这种方法怎么样:
这一切都很容易设置,让我们知道它是如何工作的。
答案 1 :(得分:2)
这个问题激起了我的好奇心,因为我试图做一些类似使用 Leon的iframe解决方案suggested。最后我成功了,但是,我想建议您不要使用直接的onload
属性,而是使用iframe上的jQuery .load()
event。
编辑:这就是我设置表单的方式(使用HTML5,因此不需要引号):
<div id=message></div> /* Example-specific, see below */
<form method=post action=backend.php target=iframe>
// Form data here
</form>
<iframe name=iframe></iframe>
我添加了以下CSS代码来隐藏iframe:
iframe {
border:0px;
height:0px;
visibility:hidden;
width:0px;
}
请勿使用display:none
,因为某些浏览器会拒绝提交未显示的元素。
然后在我的$(document).ready()
JavaScript ...
$('iframe').load(function(){
// Your load event here.
});
您也可以更改它,以便它特别仅在特定事件之后触发(例如,如果您使用动态表单)。在这种情况下,您可能希望在.unbind('load')
之前使用.load()
来阻止之前添加的.load()
函数进行调用。
现在提交表单时,它会加载到隐藏的iframe中。当iframe加载页面时(在我的示例中为backend.php),它会触发.load()
函数。在我的具体情况下,我设置<div id=message>
来显示消息:
$('iframe').load(function(){
$('#message').html('The form successfully submitted.');
});
答案 2 :(得分:1)
我不确定您编写的是哪种语言。 一个选项 - 使用javascript。
在提交按钮onclick事件(客户端事件)上,如果页面有效,则执行页面验证并显示警告弹出窗口。
<script type="text/javascript">
function OnSubmitClientClick() {
Page_ClientValidate();
if (Page_IsValid) {
alert('Form has been successfully submitted.');
return true;
}
}
</script>
答案 3 :(得分:0)
为什么要放弃AJAX方法?没有AJAX,服务器端验证意味着页面重新加载。在页面重新加载时,您将失去客户端(JS)状态。
另一种方法是使用隐藏的框架/ iframe /新窗口在表单提交上执行服务器端验证(可能使用您在问题中引用的弹出窗口)。在我看来,这不是正确的方法(大B)。您可能更喜欢坚持AJAX或使用非AJAX格式提交。