From 72770f68a1481bfadddd71bda0d91cea504a5b5c Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 19 Mar 2021 22:45:13 +0800 Subject: [PATCH] Store jqXHR in promise object. Resolve #8139 --- npm/packs/jquery/src/abp.jquery.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/npm/packs/jquery/src/abp.jquery.js b/npm/packs/jquery/src/abp.jquery.js index 77537c2406..6f8f5b20ce 100644 --- a/npm/packs/jquery/src/abp.jquery.js +++ b/npm/packs/jquery/src/abp.jquery.js @@ -1,4 +1,4 @@ -var abp = abp || {}; +var abp = abp || {}; (function($) { if (!$) { @@ -99,19 +99,28 @@ options.success = undefined; options.error = undefined; - return $.Deferred(function ($dfd) { - $.ajax(options) + var xhr = null; + var promise = $.Deferred(function ($dfd) { + xhr = $.ajax(options) .done(function (data, textStatus, jqXHR) { $dfd.resolve(data); userOptions.success && userOptions.success(data); }).fail(function (jqXHR) { + if(jqXHR.status === 0 || jqXHR.statusText === 'abort') { + //ajax request is abort, ignore error handle. + return; + } if (jqXHR.getResponseHeader('_AbpErrorFormat') === 'true') { abp.ajax.handleAbpErrorResponse(jqXHR, userOptions, $dfd); } else { abp.ajax.handleNonAbpErrorResponse(jqXHR, userOptions, $dfd); } }); - }); + }).promise(); + + promise['jqXHR'] = xhr; + + return promise; }; $.extend(abp.ajax, {