解决的过程挺有意思的,看我这小白一步步的给大家呈现0.0
1、执行一个方法前需要做一个数据交互的校验,用了下ajax,发现返回值为undefined
/* 检查节点数*/
function checkNodeNum(id){
$.ajax({
url:"${ctx}/ajaxCheckNodeNum?id="+id,type:"post",dataType:"json",data:{},success: function(data){
var msg = data;
if(msg!=""){
alert(msg);
return false;
}else{
return true;
}
},error : function(){
alert("启动失败!")
that.attr("disabled",false);
return false;
}
});
}
2、检查发现,ajax是在调用方法里面,所以决定返回值的还是方法外面,所以首先定义一个变量。此时返回值不再是undefined,但是此时始终返回false
function checkNodeNum(id){
var isTrue = false;
$.ajax({
url:"${ctx}/ajaxCheckNodeNum?id="+id,success: function(data){
var msg = data;
if(msg!=""){
alert(msg);
isTrue = false;// 1
}else{
isTrue = true;// 2
}
},false);
isTrue = false;// 3
}
});
return isTrue;// 4
}
3、debugger下,发现是因为提交url时,异步直接执行到了4,返回值就是默认的false,所以此时需要调整为先提交url,根据请求的返回值来决定返回true或者false,添加属性async。async:false表示同步,等待请求执行完成。
function checkNodeNum(id){
var isTrue = false;
$.ajax({
url:"${ctx}/ajaxCheckNodeNum?id="+id,async:false,success: function(data){
var msg = data;
if(msg!=""){
alert(msg);
isTrue = false;
}else{
isTrue = true;
}
},false);
isTrue = false;
}
});
return isTrue;
}
不要说你没看明白啊,难得你比我还白,水白水白的