jsでのajaxの実行順序

1193 ワード

jsでajaxリクエストを使用する場合は、ajaxリクエストが終了した後にjsメソッドの操作を続行する必要がある場合はajaxプロパティを設定する必要があります.
asyncがfalseに設定されている場合、すべてのリクエストは同期リクエストであり、値が返されない前に同期リクエストはブラウザにロックされ、ユーザーの他の操作はリクエストの完了を待たなければ実行できません.
 
asyncのデフォルトはtrueです.
すなわちjs関数でajax関数を呼び出してから他の操作を行う場合、関数に戻り値がある場合はajaxに同期属性を設定する必要があります!!!
miniuiカスタムチェック時の血まみれの教訓を書く:
開始時に同期属性を追加せず、ajaxでバックグラウンドデータの検証を要求した後、毎回取得したe.isValid属性は変化したが、検証中には効果表示がなく、データの提出時にこの検証結果も効果がなかったので、長い間試してみたところ、ajaxの実行順序の問題であることがわかり、最後に同期属性を加えた後、効果は正常な表示です!!!
	function isalive(e) {
			var flag=true;
		 	var data = form.getData();
			var site = new mini.get("site");
		 	var datas = {
				bookname : data.bookname
			};
			$.ajax({
				url : "../Selbookbyname",
				type : "post",
				async:false ,//  
			 	data : mini.encode(datas),
				success : function(result) { //    
				 	if(result.flag){
				 		flag=true;
				 		 e.isValid = false;
				 	}else{
				 		flag=false;
				 		 e.isValid = true;
				 	}
				 	
			 },
				error : function() {
					console.log("      ");
				}

			});
		 
		 	}
		//       
		function onbooknameValidation(e) {
			   isalive(e)
			 
		}