-4

私の問題は、ユーザーがWebサイトのリンクをクリックすると、jqueryを使用してイベントクリックをキャッチし、ajaxを使用してデータベースを更新する場合、このようなことを行うと、フォームサーバーの応答を待機するため、少し時間がかかることです。

$.ajax({
success: function() {
...
window.href = link;
}
});

こんなもの欲しい

$.ajax({
alreadysend: function() {
...
}
});

ドキュメントajaxを読みましたが、問題の解決策が見つかりません。

編集:私は私の問題を解決します、私はjQueryに一生懸命取り組む必要があります、すべてに感謝します

4

4 に答える 4

4

Ajaxは非同期であるため、デフォルトでこれを行います。サーバーに到達して応答したかどうかに関係なくコードを実行する場合は、実行コードをAjaxブロックの後に配置するだけです。

反対に、ユーザーがすでに送信アクションを実行したかどうかを確認したい場合は、application-scope変数を使用して、呼び出しイベントと完了イベントを切り替えることができます。(つまり、ユーザーがAjax呼び出しを開始するときにtrueに設定されます。完了したら、falseに設定されます。すでにtrueになっている呼び出しを禁止します)

于 2012-07-08T14:30:23.553 に答える
1

行の後に呼び出したい関数を呼び出してみません$.ajaxか?このような:

$.ajax({ ... });
do_things();

編集リダイレクトを実行する場合は、AJAX呼び出しが戻ってくるのを待って、成功したかどうかを確認する必要があります。成功したかどうかを気にせず、呼び出しを行うことだけを気にする場合は、呼び出しが非同期で行われるため、$。ajax呼び出しの後の行に配置できます。いずれにせよ、私たちはあなたが正確に達成したいことについてのいくつかのより多くの情報を必要としています。

于 2012-07-08T14:29:36.440 に答える
1

$ .ajaxを呼び出した直後に、コードを呼び出すだけです。

$.ajax({success: function(){
    // done after server response
}});

// do something immediately after 

Ajax呼び出しは非同期であるため、スクリプトはブロックされません。

于 2012-07-08T14:30:40.453 に答える
0

私はあなたが何をしようとしているのか100%確信していませんが、コードが続行される前にajax呼び出しが戻るのを待ちたい場合は、asyncfalseに設定することでそうするように設定できますが、これは注目に値します一種の逆効果であり、jQuery1.8では非推奨です。

http://api.jquery.com/jQuery.ajax/

デフォルトでは、すべてのリクエストは非同期で送信されます(つまり、これはデフォルトでtrueに設定されています)。同期リクエストが必要な場合は、このオプションをfalseに設定してください。クロスドメインリクエストとdataType:「jsonp」リクエストは同期操作をサポートしていません。同期リクエストはブラウザを一時的にロックし、リクエストがアクティブな間はアクションを無効にする可能性があることに注意してください。jQuery 1.8以降、async:falseの使用は非推奨になりました。

于 2012-07-08T14:38:20.147 に答える