关于form表单中使用ajax提交表单,ajax无法success的问题

来源:互联网 发布:淘宝九一一正品折扣店 编辑:程序博客网 时间:2024/05/22 11:52

问题背景:我的毕业设计是重构自己以前写过的一个小网站,之前写的时候没有用任何框架,前后台交互数据靠el表达式、form表单。在完成毕业设计时使用SpringMVC+Spring+MyBatis+JQuery,统一使用ajax来交互数据。

问题再现

html关键代码

<form action="#" onsubmit="registerUserAndPlayer()"></br></br><input type="submit" value="确定" class="sure" /></form>

js关键代码

function registerUserAndPlayer(){if(!checkAll()){return false;}var url = "user/addUser"; var username =document.getElementById("username").value;var password =document.getElementById("password").value;var remark =document.getElementById("remark").value;var obj = {username:username,password:password,remark:remark};var json = JSON.stringify(obj);$.ajax({    url:url,    type:'POST',    async:true,      data: json,    contentType:"application/json",    dataType:'json',    success:function(data,textStatus,jqXHR){alert(data);window.location.href = "login.html";}})}
点击确定注册后,后台新增用户执行成功,数据库也新增了数据,但是ajax没有调用success方法。

解决方法

在写注册的ajax之前,才写了两个其他的ajax,前端和后台代码都没有问题。后来对比了一下这个ajax和之前写的ajax有一点不同,这里是牵扯到了form表单,会不会是因为一些职责耦合或者不兼容的问题让ajax失效了呢?于是我把html代码改了一下。

<form action="login.html" onsubmit="return registerUserAndPlayer()"></form>
页面跳转部分的职责交给了form表单,前端这边输入合法就可以跳转到登陆页面,否则不跳转。但这样做有个缺陷,就是无法根据后台的执行情况来做判断,如果后台实际新增失败,页面仍会跳转。

之前这个项目里前后台数据交互就通过el表达式、表单,既然现在都提倡统一用ajax交换json格式数据,怎么可能会这样半吊子一半用原生的form表单一半用ajax请求呢?于是我百度了一下。。。。。。。。。。。。。。。。


原来ajax有关于处理form表单的东东啊!再见

http://jquery.malsup.com/form/#ajaxForm

这就是没有系统的学过只会用的坏处!

0 0