博主在学习ajax前后端数据传输时,实现注册功能时,遇到的一个小问题 这种情况百度上有着各种各样的方法 起初我以为是后端代码出现了问题,但是数据的传输完全没问题 后来又以为是POST请求的问题 但是最后发现只是一个相当小的问题,也是相当不应该犯错的地方
function register() { var username = $('#username').val(); var email = $('#email').val(); var password = $("#passwordEmail").val(); var passwordRepeat = $("#passwordRepeatemail").val(); $.ajax({ type: "POST", url: "http://**************.do", data: {"username": username,"email": email, "password": password, "passwordRepeat": passwordRepeat}, dataType: "json", success: function (data) { if (data.code == 1000) { window.location.href = "login.html"; } else { alert(data.msg); } } }); }这是JS部分的代码,一开以为问题出现在这边,但是反复调式过后 success:function函数里面的跳转功能仍然没有起到任何作用 使用了error:function也发现alert后显示的是undefined
最后排除了JS代码的问题 就查看HTML文件
<form> <input type="text" id="username" placeholder="用户名"> <input type="email" id="email" placeholder="邮箱"> <input type="password" id="emailPassword" placeholder="用户名"> <input type="password" id="passwordRepeatemail" placeholder="用户名"> <input type="submit" value="注册" onclick="register()"> </form>为了最直观的观察到错误所在的地方所以把样式全部去掉了 最后发现 注册按钮位置的问题
<form> <input type="text" id="username" placeholder="用户名"> <input type="email" id="email" placeholder="邮箱"> <input type="password" id="emailPassword" placeholder="用户名"> <input type="password" id="passwordRepeatemail" placeholder="用户名"> </form> <input type="submit" value="注册" onclick="register()">只要把调用函数的按钮放在form标签外就可以了
至于原因似乎是:这是用了(博主「进击的石头」的原创文章)的解释 1.ajax在提交,请求,接收时,都是异步进行的,网页不需要刷新。 from表单提交时是新建一个页面,哪怕是提交给自己本身的页面,也是需要刷新的。 2.ajax在提交时,是在后台新建一个请求。 from表单趋势放弃本页面,再次申请。 3.ajax必须使用js来实现,不启用js的浏览器,无法完成操作。 from是浏览器的功能,无论是否开启js,都可以提交表单。 4.ajax在提交,请求,接收时,整个过程都是需要使用程序来对其数据进行处理。 from提交时,是根据你的表单结构自动完成,不需要代码干预。 ———————————————— 版权声明:本文为博主「进击的石头」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_41812702/article/details/80899967
更详细的大家可以去百度ajax和form的区别
