From 44bf836651761e0e7c993df922f081bb2afba981 Mon Sep 17 00:00:00 2001 From: jlukic Date: Thu, 23 Jul 2015 15:38:29 -0400 Subject: [PATCH] Related #2713 add XHR to all callbacks --- RELEASE-NOTES.md | 4 ++++ src/definitions/behaviors/api.js | 15 ++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 12f95d9ee..7bdf85e6a 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -2,6 +2,10 @@ ### Version 2.0.7 - July 22, 2015 +**Enhancements** + +- **API** - All API callbacks now recieve `xhr` from API request as the third calback parameter + **[Reported Bugs](https://github.com/Semantic-Org/Semantic-UI/issues?q=is%3Aissue+milestone%3A2.0.7+is%3Aclosed)** - **Build Tools** - Fixed issue where `npm install semantic-ui` would hang after setup in some version of NPM - **Build Tools** - Fixed `npm install` with CI or tests. Install will not stop to ask questions if project has an existing `semantic.json` file diff --git a/src/definitions/behaviors/api.js b/src/definitions/behaviors/api.js index 8c46648a2..d210e8a9f 100644 --- a/src/definitions/behaviors/api.js +++ b/src/definitions/behaviors/api.js @@ -506,17 +506,18 @@ $.api = $.fn.api = function(parameters) { } }, request: { - done: function(response) { + done: function(response, xhr) { module.debug('Successful API Response', response); if(settings.cache === 'local' && url) { module.write.cachedResponse(url, response); module.debug('Saving server response locally', module.cache); } - settings.onSuccess.call(context, response, $module); + settings.onSuccess.call(context, response, $module, xhr); }, - complete: function(xhr) { + complete: function(maybeResponse, xhr) { var - response = module.get.responseFromXHR(xhr) + // ajax deferred returns either response or xhr depending on success/fail + response = module.get.responseFromXHR(maybeResponse) ; module.remove.loading(); settings.onComplete.call(context, response, $module, xhr); @@ -529,7 +530,7 @@ $.api = $.fn.api = function(parameters) { ; if(status == 'aborted') { module.debug('XHR Aborted (Most likely caused by page navigation or CORS Policy)', status, httpMessage); - settings.onAbort.call(context, status, $module); + settings.onAbort.call(context, status, $module, xhr); } else if(status == 'invalid') { module.debug('JSON did not pass success test. A server-side error has most likely occurred', response); @@ -541,7 +542,7 @@ $.api = $.fn.api = function(parameters) { if( xhr.status != 200 && httpMessage !== undefined && httpMessage !== '') { module.error(error.statusMessage + httpMessage, ajaxSettings.url); } - settings.onError.call(context, errorMessage, $module); + settings.onError.call(context, errorMessage, $module, xhr); } } @@ -551,7 +552,7 @@ $.api = $.fn.api = function(parameters) { setTimeout(module.remove.error, settings.errorDuration); } module.debug('API Request failed', errorMessage, xhr); - settings.onFailure.call(context, response, $module); + settings.onFailure.call(context, response, $module, xhr); } } },