Revised abp.ajax based on latest error handling changes.

pull/112/head
Halil İbrahim Kalkan 8 years ago
parent b74260645b
commit 592de3044a

@ -10,5 +10,7 @@ namespace AbpDesk.Tickets
Task<ListResultDto<TicketDto>> GetAll(GetAllTicketsInput input);
ListResultDto<TicketDto> GetAll2(GetAllTicketsInput input);
void TestException();
}
}

@ -7,6 +7,7 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Linq;
using Volo.Abp.Ui;
namespace AbpDesk.Tickets
{
@ -51,5 +52,10 @@ namespace AbpDesk.Tickets
ObjectMapper.Map<List<Ticket>, List<TicketDto>>(tickets)
);
}
public void TestException()
{
throw new UserFriendlyException("a user friendly message!");
}
}
}

@ -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');

@ -4,11 +4,6 @@
{
public RemoteServiceErrorInfo Error { get; set; }
/// <summary>
/// A special signature of ABP.
/// </summary>
public bool __abp { get; } = true;
public RemoteServiceErrorResponse(RemoteServiceErrorInfo error)
{
Error = error;

Loading…
Cancel
Save