以下のコードを使用して、AJAX経由でフォームを送信しています。
$( 'form' ).submit(function(e) {
$.ajax({
type: 'POST',
url: ajax_url,
dataType: 'json',
data: {
'action': 'my_action',
'str': $( 'form' ).serialize()
},
success: function( data ) {
// Do something here.
},
error: function( data ) {
// Do something here.
}
});
return false;
});
バックグラウンド
私のPHPハンドラーはさまざまなタスクを実行してから、応答を返します。その後data
、成功関数またはエラー関数のいずれかで何かを行うことができます。
私の問題
ユーザーがフォームの送信ボタンをダブルクリックすると、2回のAJAX呼び出しが行われ、PHPハンドラー内のコードが2回実行されます。
私の質問
ユーザーが送信をダブルクリックした場合にコードが2回実行されるのを防ぐにはどうすればよいですか?
最初のクリックで送信ボタンを無効にし、AJAX呼び出しが戻ってきたときに再度有効にします。
例えば:
$( 'form' ).submit(function(e) {
var $form = $(this);
$form.find('submit').attr('disabled', true);
$.ajax({
type: 'POST',
url: ajax_url,
dataType: 'json',
data: {
'action': 'my_action',
'str': $( 'form' ).serialize()
},
complete: function() {
$form.find('submit').removeAttr('disabled');
},
success: function( data ) {
// Do something here.
},
error: function( data ) {
// Do something here.
}
});
return false;
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加