首页 前端知识 jQuery的ajax方法里的success方法第一次不执行,第二次才执行的问题

jQuery的ajax方法里的success方法第一次不执行,第二次才执行的问题

2024-02-16 14:02:24 前端知识 前端哥 701 295 我要收藏

最近写了一个form表单提交功能,用jQuery的ajax方法实现,第一次提交时,success里的方法并没有执行,第二次提交就行了,当然后端是能正常执行的,只是前端有问题。解决办法如下:

				$('#btnSubmit').click(function() {
					
					var username = $("input[name='username']").val();
					var password = $("input[name='password']").val();
					var validateCode = $("input[name='validateCode']").val();
					var remember_me = $("input[name='remember_me']").is(':checked');

					$.ajax({
						type: "post",
						url: ctx + "user/login",
						data: {
							"username": username,
							"password": password,
							"validateCode": validateCode,
							"remember_me": remember_me
						},
						success: function(r) {
							if (r.code == 0) {
								location.href = ctx;
							} else if(r.code == 301){
								$('.imgcode').click();
								$('.validateCode').val("");
								alert(r.msg);
								
							} else if(r.code == 500) {
								$('.username').val("");
								$('.password').val("");
								alert(r.msg);
								
							}
							
						}
					});
					return false;	//禁止提交表单
				});

注意最后一行代码,即return false;这条代码一定要加上,为了禁止提交表单。

当然,还有一种解决办法,将form表单里的button标签的 type=submit 改为 type=button。如下图所示: 

原理:

在表单中的button默认类型是submit,如果你触发ajax请求的是button,而你的button又在表单中,那么在你发送请求后,在执行success回调方法之前会提交表单,如果我们好好了解一下表单和ajax请求区别的话,可以知道表单是要刷新整个界面的,所以当你发送请求后,会提交表单,这时候你的界面就不是你之前的界面了,所以我们要让他发完请求后不要提交表单,也就是用return false终止。既然我们知道了原理,那我们也大可以这样,把button从表单拿出来,或者说不需要表单你就干脆把表单删了,反正你是ajax请求,再不济你就设置button的类型不是submit就好了。

转载请注明出处或者链接地址:https://www.qianduange.cn//article/2189.html
标签
ajax
评论
发布的文章

jquery.动画和事件

2024-03-03 11:03:13

jQuery位置方法

2024-03-03 11:03:13

jQuery中val()和text()的区别

2024-03-03 11:03:11

jquery实现甘特图时效管理

2024-03-03 11:03:47

django之 echarts数据可视化

2024-03-03 11:03:26

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!