jquery では、ajax は async を false に設定して同期させることができます。デフォルトでは、jquery の ajax はパラメータ「asycn:false」を設定することで非同期リクエスト、つまり「async:true」になります。構文は「$.ajax({async: false})」です。
この記事の動作環境: Windows 10 システム、jquery バージョン 3.6.1、Dell G3 コンピューター。
jquery の Ajax はデフォルトでは非同期リクエスト (async:true) ですが、パラメーター asycn:false を設定することで同期にすることができます
ajax のデフォルトは非同期リクエストです。ajax では、async 値に基づいて非同期リクエストかどうかを判断できます。async の値が false の場合、ajax リクエストは同期であることを意味します。 async is true, it means the ajax request is asynchronous. デフォルトでは、async の値は「true」であるため、ajax はデフォルトで非同期リクエストになります。
async を同期したい場合は、false に設定します (デフォルトは true)
var html = $.ajax({ url: “some.php”, async: false }).responseText;
または、Ajax 属性をグローバルに設定します
$.ajaxSetup({ async: false });
次に、post を使用すると、get は次のようになります。 synchronized
例は次のとおりです:
10 桁の整数をランダムに生成し、バックエンド データベースと比較します。バックエンド データベース内のこの乱数が番号である場合は、1 つを再生成し、そうでない場合はこの番号を返します。
この要件にはフロントエンドとバックエンドのやり取りが含まれるため、ajax の使用が避けられないため、最初にこのようなコードを書きました。
//randID是封装的生成随机数的函数 function userID() { let ranid = parseInt(randID(1000000000, 10000000001)); let data = null; $.ajax({ type: 'post', url: './php/findID.php', data: 'id=' + ranid, success: function(res) { res = JSON.parse(res); isok = res.length; if (isok != 0) { userID(); } else { return ranid; } } }) } console.log(userID());
出力結果:
jquery.ajax solution
at Declare a関数配下のローカル変数(ajax外)
ajaxを同期処理として扱う(jquery.ajaxの修正方法: async: falseにこのコードを追加)
宣言されたローカル変数を返します
function userID() { let ranid = parseInt(randID(1000000000, 10000000001)); //声明的局部变量 let data = null; $.ajax({ type: 'post', url: './php/findID.php', data: 'id=' + ranid, //将ajax改为同步操作 async: false, success: function(res) { res = JSON.parse(res); isok = res.length; if (isok != 0) { console.log(ranid); userID(); } else { data = ranid; } } }) //返回这个局部变量 return data; } console.log(userID());
出力結果:
関連チュートリアルの推奨事項: jQuery ビデオ チュートリアル
以上がjquery ajaxを同期に変更する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。