ajax的return返回值为undefined
发布时间:2020-12-16 01:46:19 所属栏目:百科 来源:网络整理
导读:解决的过程挺有意思的,看我这小白一步步的给大家呈现0.0 1、执行一个方法前需要做一个数据交互的校验,用了下ajax,发现返回值为undefined /* 检查节点数*/ function checkNodeNum (id) { $.ajax({ url: "${ctx}/ajaxCheckNodeNum?id=" +id,type: "post" ,d
解决的过程挺有意思的,看我这小白一步步的给大家呈现0.0 /* 检查节点数*/
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;
}
不要说你没看明白啊,难得你比我还白,水白水白的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |