|
|
|
@ -13,21 +13,18 @@ |
|
|
|
userOptions = userOptions || {}; |
|
|
|
|
|
|
|
var options = $.extend(true, {}, abp.ajax.defaultOpts, userOptions); |
|
|
|
|
|
|
|
options.success = undefined; |
|
|
|
options.error = undefined; |
|
|
|
|
|
|
|
return $.Deferred(function ($dfd) { |
|
|
|
$.ajax(options) |
|
|
|
.done(function (data, textStatus, jqXHR) { |
|
|
|
if (data.__abp) { |
|
|
|
abp.ajax.handleResponse(data, userOptions, $dfd, jqXHR); |
|
|
|
} else { |
|
|
|
$dfd.resolve(data); |
|
|
|
userOptions.success && userOptions.success(data); |
|
|
|
} |
|
|
|
$dfd.resolve(data); |
|
|
|
userOptions.success && userOptions.success(data); |
|
|
|
}).fail(function (jqXHR) { |
|
|
|
if (jqXHR.responseJSON && jqXHR.responseJSON.__abp) { |
|
|
|
abp.ajax.handleResponse(jqXHR.responseJSON, userOptions, $dfd, jqXHR); |
|
|
|
if (jqXHR.getResponseHeader('_AbpErrorFormat') === 'true') { |
|
|
|
abp.ajax.handleAbpErrorResponse(jqXHR.responseJSON, userOptions, $dfd, jqXHR); |
|
|
|
} else { |
|
|
|
abp.ajax.handleNonAbpErrorResponse(jqXHR, userOptions, $dfd); |
|
|
|
} |
|
|
|
@ -110,6 +107,27 @@ |
|
|
|
userOptions.error && userOptions.error.apply(this, arguments); |
|
|
|
}, |
|
|
|
|
|
|
|
handleAbpErrorResponse: function (data, userOptions, $dfd, jqXHR) { |
|
|
|
var messagePromise = null; |
|
|
|
|
|
|
|
if (data.error) { |
|
|
|
if (userOptions.abpHandleError !== false) { |
|
|
|
messagePromise = abp.ajax.showError(data.error); |
|
|
|
} |
|
|
|
} else { |
|
|
|
data.error = abp.ajax.defaultError; |
|
|
|
} |
|
|
|
|
|
|
|
abp.ajax.logError(data.error); |
|
|
|
|
|
|
|
$dfd && $dfd.reject(data.error, jqXHR); |
|
|
|
userOptions.error && userOptions.error(data.error, jqXHR); |
|
|
|
|
|
|
|
if (jqXHR.status === 401 && userOptions.abpHandleError !== false) { |
|
|
|
abp.ajax.handleUnAuthorizedRequest(messagePromise); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleUnAuthorizedRequest: function (messagePromise, targetUrl) { |
|
|
|
if (messagePromise) { |
|
|
|
messagePromise.done(function () { |
|
|
|
@ -120,44 +138,6 @@ |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
handleResponse: function (data, userOptions, $dfd, jqXHR) { |
|
|
|
if (data) { |
|
|
|
if (data.success === true) { |
|
|
|
$dfd && $dfd.resolve(data.result, data, jqXHR); |
|
|
|
userOptions.success && userOptions.success(data.result, data, jqXHR); |
|
|
|
|
|
|
|
if (data.targetUrl) { |
|
|
|
abp.ajax.handleTargetUrl(data.targetUrl); |
|
|
|
} |
|
|
|
} else if (data.success === false) { |
|
|
|
var messagePromise = null; |
|
|
|
|
|
|
|
if (data.error) { |
|
|
|
if (userOptions.abpHandleError !== false) { |
|
|
|
messagePromise = abp.ajax.showError(data.error); |
|
|
|
} |
|
|
|
} else { |
|
|
|
data.error = abp.ajax.defaultError; |
|
|
|
} |
|
|
|
|
|
|
|
abp.ajax.logError(data.error); |
|
|
|
|
|
|
|
$dfd && $dfd.reject(data.error, jqXHR); |
|
|
|
userOptions.error && userOptions.error(data.error, jqXHR); |
|
|
|
|
|
|
|
if (jqXHR.status === 401 && userOptions.abpHandleError !== false) { |
|
|
|
abp.ajax.handleUnAuthorizedRequest(messagePromise, data.targetUrl); |
|
|
|
} |
|
|
|
} else { //not wrapped result
|
|
|
|
$dfd && $dfd.resolve(data, null, jqXHR); |
|
|
|
userOptions.success && userOptions.success(data, null, jqXHR); |
|
|
|
} |
|
|
|
} else { //no data sent to back
|
|
|
|
$dfd && $dfd.resolve(jqXHR); |
|
|
|
userOptions.success && userOptions.success(jqXHR); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
blockUI: function (options) { |
|
|
|
if (options.blockUI) { |
|
|
|
if (options.blockUI === true) { //block whole page
|
|
|
|
@ -194,44 +174,6 @@ |
|
|
|
return abp.ajax.ajaxSendHandler(event, request, settings); |
|
|
|
}); |
|
|
|
|
|
|
|
/* JQUERY PLUGIN ENHANCEMENTS ********************************************/ |
|
|
|
|
|
|
|
/* jQuery Form Plugin |
|
|
|
* http://www.malsup.com/jquery/form/
|
|
|
|
*/ |
|
|
|
|
|
|
|
// abpAjaxForm -> uses ajaxForm ------------------------------------------
|
|
|
|
|
|
|
|
if ($.fn.ajaxForm) { |
|
|
|
$.fn.abpAjaxForm = function (userOptions) { |
|
|
|
userOptions = userOptions || {}; |
|
|
|
|
|
|
|
var options = $.extend({}, $.fn.abpAjaxForm.defaults, userOptions); |
|
|
|
|
|
|
|
options.beforeSubmit = function () { |
|
|
|
abp.ajax.blockUI(options); |
|
|
|
userOptions.beforeSubmit && userOptions.beforeSubmit.apply(this, arguments); |
|
|
|
}; |
|
|
|
|
|
|
|
options.success = function (data) { |
|
|
|
abp.ajax.handleResponse(data, userOptions); |
|
|
|
}; |
|
|
|
|
|
|
|
//TODO: Error?
|
|
|
|
|
|
|
|
options.complete = function () { |
|
|
|
abp.ajax.unblockUI(options); |
|
|
|
userOptions.complete && userOptions.complete.apply(this, arguments); |
|
|
|
}; |
|
|
|
|
|
|
|
return this.ajaxForm(options); |
|
|
|
}; |
|
|
|
|
|
|
|
$.fn.abpAjaxForm.defaults = { |
|
|
|
method: 'POST' |
|
|
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
abp.event.on('abp.dynamicScriptsInitialized', function () { |
|
|
|
abp.ajax.defaultError.message = abp.localization.abpWeb('DefaultError'); |
|
|
|
abp.ajax.defaultError.details = abp.localization.abpWeb('DefaultErrorDetail'); |
|
|
|
|