AJAX的success回调函数执行时间问题

在ajax中进行if else判断

controller return一个int类型的数据给前端ajax

//AddEmployee
				@RequestMapping("/addEmployee")
				@ResponseBody
				public int addEmployee(@RequestParam("empId") String empId
										,@RequestParam("empName") String empName
										,@RequestParam("empGender") String empGender
										,@RequestParam("empAge") String empAge
										,@RequestParam("empPosition") String empPosition
						) throws IOException  {
					ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
					HSMSservice serv=ac.getBean("HSMSservice",HSMSservice.class);
					List<Integer> empsId=serv.selectId();
					int iempId=Integer.parseInt(empId);
					int iempAge=Integer.parseInt(empAge);
					int yon=1;
					Employee empOfAdd=new Employee(iempId,iempAge,empName,empGender,empPosition);

					for(int i=0;i<empsId.size();i++) {
						Integer eid=(Integer)empsId.get(i);
						
						if(iempId==eid) {
							yon=0;
							break;	
						}else {
						}
					}
					
					if(yon==1) {
						serv.insertEmoloyee(empOfAdd);
					}else {
						
					}
					
					return yon;
				}

前台AJAX的代码

          var yon1=-1;
 $.post({
                  		    	url:'addEmployee',
                  		    	data:{
                  		    		'empId':document.getElementById("employee_id").value,
                  		    		'empName':document.getElementById("employee_name").value,
                  		    		'empGender':document.getElementById("employee_gender").value,
                  		    		'empAge':document.getElementById("employee_age").value,
                  		    		'empPosition':document.getElementById("employee_position").value
                  		    	},
                  		 	 	 success:function(yon){
                  		 	 		yon1=yon;
                  		 	 		console.log("yon=========="+typeof yon); //打印出yon的类型
                  		 	 		console.log("yon1=========="+typeof yon1);//打印出yon1的类型
                  		 	 		console.log("yon=========="+yon);
                  		 	 		console.log("yon1=========="+yon1);
                  		 	 	if(yon1==1){
                        			  layer.msg('添加成功!');
                          		  layer.close(index); //关闭
                        			}else if(yon1==0){
                        			  layer.msg('添加失败,员工号已存在,请重新输入')
                        			}else{
                        				layer.msg("error");
                        			}
                   		  }
                  		    })	
                  		   console.log("data1==========="+yon1);

重点来了,我们要知道,success回调函数是最后调用的(至少在一个包含AJAX的函数里),如图中console.log("data1==========="+yon1); 是AJAX之外的一行代码,看起来是在AJAX之后,但其实他比回调函数先执行。
data1最先被打印出来
楼主一开始把if语句和console打印语句都放在AJAX之后,以为是先执行回调函数success后进行if判断和console打印,其实这是因为楼主不清楚回调函数的运行机制。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值