這里以編輯驗證角色名為例:
首先,定義一個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 }