解決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         }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM