ドキュメントの準備ができたら、設定しました
$.ajaxSetup({
"error": function (XMLHttpRequest, textStatus, errorThrown) {
if(XMLHttpRequest.status == 403) {
display_modal( 'Please login to continue.', 'Session in closed.');
//XMLHttpRequest.abort();
}
}
});
認証されていないユーザーからの ajax リクエストを防止します。
しかし、特定のビューでは、POST/GET リクエストが行われると、
var posting = $.post(
post_url,
$("#" + form).serialize(),
function(data) {
packet = data;
},
'json'
);
posting.done(function() {
form_post_response_function(e, packet);
});
posting.fail(function() {
var packet = {};
packet.data = {};
packet.data.type = "Ajax Post Fail";
packet.status = -200;
packet.statusMessage = "ERROR";
form_post_response_function(e, packet);
});
私は呼ばれることを期待してposting.fail(function() {
いましたgetting.fail(function() {
が、呼ばれませんでした。しかし、それらはそうであるため、すべてのフローが進み、403 メッセージに重なる別のモーダルで終了します。
raw なしでこれを回避するにはどうすればよい$.ajax
ですか? エラーキャッチでJQueryフローを停止するにはどうすればよいですか?
最終コード
posting.fail(function(jqXHR, textStatus, errorThrown) {
if(jqXHR.status != 403) {
var packet = {};
packet.data = {};
packet.data.type = "Ajax Post Fail";
packet.status = -200;
packet.statusMessage = "ERROR";
form_post_response_function(e, packet);
} else {
// event also can be accessed here
$(get_target(e)).button('reset');
}
});
そして静かに止まる。いいね。