表单提交和ajax综合应用跳转
做项目的时候遇到了这样一个问题,我是想在提交表单事前,用ajax请求更新一下后台的数据库。更新失败则不跳转,更新成则
跳转。代码类似于这样。
//jsp的表单
<form action="xx.jsp" method="post">
<input class="input1" type="submit" onsubmit="return fun()">
</form>
//js代码
<script>
function fun(){
$.ajax({
type:"post",
url:"${basePath_s}user/change",
cache:false,
async:false,
data:{"shopid":shopid},
dataType:"json",
success:function(data,textStatus,jqXHR){
return true;
},
error:function(XMLHttpRequest,textStatus,errorThrown){
return false;
}
})
}
</script>
最开始是想通过ajax返回值来控制表单跳转,后来发现直接就跳页了,根本没有执行ajax的请求的controller,
后来经过很多次测试,发现了是ajax参数的原因,其中的async这个参数,它代表是否同步执行ajax,默认为false。这样ajax就会
变成异步执行,碰到ajax直接不理会执行ajax下面的内容。也就直接返回给了表单的值。表单里的input如果设置为submit。那么
action就算不写或者置为空都会默认跳到自己的页面。所以要慎用submit。后来把form去掉。改用按钮绑定ajax,成功之后在前
台利用window.location.herf="xxxx"跳转。这样是比较常用的形式,用表单提交数据小伙伴要注意了一些,不要在form表单之前做
判断,可能会得不到你想要的结果!!!