特定の ajax 呼び出しが行われたときに現在のページをブロックし、blockUI をメッセージ ボックスとして使用したいと考えています。私はちょうど使用することはできません$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
私のコードは次のとおりです..
bc.find('.submit').click(function (e) {
e.preventDefault();
if ($(this).hasClass('lock'))
return;
$.blockUI();
$(this).addClass('lock');
bc.submit();
});
var validator;
validator = bc.validate({
ignore: '',
rules: {
UserName: {
required: true
}
},
messages: {
UserName: 'must have',
},
submitHandler: function (form) {
$.ajax({
url: '/yyyy/xxxx',
type: 'POST',
data: postdata,
complete: function () {
bc.find('.submit').removeClass('lock');
},
success: function (data) {
if (data.status == 'OK') {
$.blockUI({ message: 'OK' });
......
}
else {
switch (data.status) {
case 'xxx':
......
}
$.unblockUI();
}
},
error: function () {
$.unblockUI();
alert('xxx');
}
});
}
});
シナリオは、.submit
ボタンをクリックすると、ページがブロックされ、サーバーに対して ajax 呼び出しが行われてデータ応答が取得されるというものです。ajax 呼び出しが成功したら、現在のページのブロックを解除し、data.status が「OK」の場合は、メッセージ ボックスを表示します (これも blockUI プラグインに基づいています)。それ以外の場合は、現在のページにエラーを表示してからブロックを解除します。
2016年に編集、質問の意味を変更する編集があります(おそらくその時点での私の英語力が非常に低いため)、ここで変更をロールバックし、より明確にしました。以下を再度変更しないでください.
しかし実際には、ajax 呼び出しが完了した後でのみ(コードのコードをステップ オーバーしてデバッグajax complete handler
)、次を参照してください。
- 最初に
$.blockUI();
処刑された - 実行する
$.blockUI({ message: 'OK' })
かしないか - その後
$.unblockUI()
呼ばれる
(上記は、答えのchromeまたはfirefoxデバッグツールの異常な実行シーケンスを意味するものです.ajaxのblockui code
完了後に実行されるべきではないため)
それは私が望んでいるものではありません、そして私はこれを理解できません。