在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之后,但其实他比回调函数先执行。
楼主一开始把if语句和console打印语句都放在AJAX之后,以为是先执行回调函数success后进行if判断和console打印,其实这是因为楼主不清楚回调函数的运行机制。