jQuery.ajax()このオプションを使用asyncしてfalseに設定できます。
asyncデフォルト:trueデフォルトでは、すべての要求は非同期で送信されます(つまり、これはデフォルトでtrueに設定されています)。同期リクエストが必要な場合は、このオプションをfalseに設定してください。クロスドメインリクエストとdataType:「jsonp」リクエストは同期操作をサポートしていません。同期リクエストはブラウザを一時的にロックし、リクエストがアクティブな間はアクションを無効にする可能性があることに注意してください
あなたはそれをこのように使うことができます:
$.ajax({
type: "POST",
url: "file.php",
async: false,
data: data,
success: function(return){
alert("Success: "+return);
}
});
ローダーを追加する場合は、次のように適用します。
startLoader();
$.ajax({
type: "POST",
url: "file.php",
async: false,
data: data,
success: function(return){
alert("Success: "+return);
}
});
endLoader();
ただし、PHPのアイデアは単に良いものではありません。セッションを開いてこの種のすべてのプロセスを実行するのは役に立たず、スクリプトの速度が低下します。あなたは自分自身に問いかける必要があります:私は本当にこれをブロックする必要がありますか?
答えが「はい」の場合は、次のようprocessesにします。データベースで呼び出されるテーブルを作成します。そのテーブル内に2つのフィールドを作成します。1つはプロセス識別子になります:process_id; 2番目はプロセスステータスになります:process_status。1つ目は、sha1(IMAGE)で定義する整数です。2番目は整数になります:1「ビジー」の場合0は「フリー」の場合。
次に、次のようなことを行うことができます。
SELECT process_status FROM vps_processes WHERE process_id = sha1(CURRENT_IMAGE);
そして、それが何である1かを確認し0ます。1その後、スクリプトをブロックする場合。その場合は、次の0クエリを実行します。
UPDATE vps_processes SET process_status = 1 WHERE process_id = sha1(CURRENT_IMAGE);
次に、実行する必要があるものを実行し、スクリプトクエリの最後に次のようにします。
UPDATE vps_processes SET process_status = 0 WHERE process_id = sha1(CURRENT_IMAGE);