情景一:不存在Ajax異步操做ajax
1 使用背景:會議室預約管理系統中,當表單提交的時候須要驗證預定的時間是否符合預約規則(不須要經過訪問服務器),不然提示錯誤信息,阻止表單提交。服務器
2 相關技術點:異步
3 Demo函數
頁面代碼:url
1 @using (Html.BeginForm(null, null, null, FormMethod.Post, new { onSubmit = "returncheck();" })) // 注意:此處事件的寫法:onsubmit = "return + 事件名()" 2 {
<input type="text" name="name"> 3 <input type="submit" value="提交"> 4 }
JS代碼:spa
function check(){ if (document.testform.name.value=="admin") { alert("姓名不正確"); return false; } else{ return true; } }
情景二:須要Ajax異步操做code
1 使用背景:會議室預約管理系統中,當表單提交的時候須要驗證預定的時間是否符合預約規則(須要經過訪問服務器數據判斷),不然提示錯誤信息,阻止表單提交。orm
2 相關技術點: blog
在下面的例子中,經過onsubmit() 方法阻止提交無效的,由於, JS 中 Ajax 部分與 其餘部分是異步進行的,或者說同時進行,代碼執行(過程A)1/5行後直接執行23行,與此同時(過程B)6/22行也在進行,顯然過程B的執行進度會慢,因此尚未等到判斷返回值,A就已經執行完畢,默認Str是true,因此ajax中的判斷是無效的。進程
示例: Javascript代碼:
1 $("#save").click(function mysubmit() { 2 var str; 3 var startime = $("#datetime1").val(); 4 var endtime = $("#datetime2").val(); 5 var num = $("#mark").val(); 6 $.ajax({ 7 type: "POST", 8 url: "/MeettingRoom/meetting", 9 data: { strattime: startime, endtime: endtime, num: num }, 10 success: function (sesponseTest) { 11 if (sesponseTest == "1") { 12 str = false; 13 document.getElementById("metend").style.display = "block"; 14 15 } 16 else { 17 str = true; 18 document.getElementById("metend").style.display = "none"; 19 } 20 } 21 22 }); 23 return str; 24 25 }); //
<form onsubmit = "return check()"></form>
3 化解方法Demo:
Javascript代碼:
1 <script> 2 $("#save").click(function mysubmit() { 3 var str; 4 var startime = $("#datetime1").val(); 5 var endtime = $("#datetime2").val(); 6 var num = $("#mark").val(); 7 $.ajax({ 8 type: "POST", 9 url: "/MeettingRoom/meetting", 10 data: { strattime: startime, endtime: endtime, num: num }, 11 success: function (sesponseTest) { 12 if (sesponseTest == "1") { 13 str = false; 14 document.getElementById("metend").style.display = "block"; 15 } 16 else { 17 str = true; 18 document.getElementById("metend").style.display = "none"; 19 $("#form").submit(); // 將提交的進程放在判斷過程當中,被迫提交操做等待後臺訪問完畢後執行 20 } 21 } 22 23 }); 24 25 }); 26 </script>
<button class="btn blue" type="button" id ="save" ><i class="icon-ok"></i>保存</button>
2016/04/12 ------神奇的Javascript。