jsでのajaxの実行順序
jsでajaxリクエストを使用する場合は、ajaxリクエストが終了した後にjsメソッドの操作を続行する必要がある場合はajaxプロパティを設定する必要があります.
asyncがfalseに設定されている場合、すべてのリクエストは同期リクエストであり、値が返されない前に同期リクエストはブラウザにロックされ、ユーザーの他の操作はリクエストの完了を待たなければ実行できません.
asyncのデフォルトはtrueです.
すなわちjs関数でajax関数を呼び出してから他の操作を行う場合、関数に戻り値がある場合はajaxに同期属性を設定する必要があります!!!
miniuiカスタムチェック時の血まみれの教訓を書く:
開始時に同期属性を追加せず、ajaxでバックグラウンドデータの検証を要求した後、毎回取得したe.isValid属性は変化したが、検証中には効果表示がなく、データの提出時にこの検証結果も効果がなかったので、長い間試してみたところ、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)
}