解决ajax回调函数无返回值得问题

这里以编辑验证角色名为例:

  首先,定义一个flag全局变量。

  然后,在回调函数resp()中根据判断将flag的值设为true或false。

  最后,在调用函数ckrname()中,return flag就Ok了。

代码如下:

 1 var xmlhttp;
 2         function ckrname() {
 3             var rolename = document.getElementById("rolename").value;         
 4             var oldRoleName = document.getElementById("oldRoleName").value;         
 5             if (rolename==""||rolename==null||reg.test(rolename)) {
 6                 document.getElementById("sprname").style.color="red";
 7                 document.getElementById("sprname").innerHTML="角色名不能为空";
 8                 return false;
 9             }else{
10                 xmlhttp = new XMLHttpRequest();
11                 //绑定回调函数状态码改变事件
12                 xmlhttp.onreadystatechange=resp;
13                 //发送请求准备
14                 xmlhttp.open("get", "<%=basePath%>RoleServlet?method=neweditrole&roleName="+rolename+"&oldRoleName="+oldRoleName, true);
15                 xmlhttp.send(null);
16                 return flag;
17             }
18         }
19 var flag;
20         function resp(){
21             if(xmlhttp.readyState==4&&xmlhttp.status==200){
22                 var txt = xmlhttp.responseText;
23                 if(txt>0){
24                     //alert("用户名已存在,请重新输入!");
25                     document.getElementById("sprname").style.color="red";
26                     document.getElementById("sprname").innerHTML="角色名已存在,请重新输入!";
27                     flag=false;
28                 }else{
29                     document.getElementById("sprname").innerHTML = "√";
30                     document.getElementById("sprname").style.color = "green";
31                     flag=true;
32                 }
33             }
34         }
csdn:https://blog.csdn.net/lzxlfly
原文地址:https://www.cnblogs.com/lzxlfly/p/5879167.html