В машинописи у меня есть класс DataAccess, так что все вызовы Ajax направляются через один объект, чтобы сохранить повторение кода во многих местах моего приложения.
При использовании этого подхода мне нужно было использовать обратные вызовы, чтобы получить ответ обратно вызывающему классу, чтобы можно было соответственно обработать успех и ошибку.
Это машинопись
ajaxCall(retVal, retError) {
$.ajax({
type: this.callType,
data: this.dataObject,
dataType: this.dataType,
url: this.url,
contentType: this.contentType,
traditional: this.traditional,
async: this._async,
error: retError,
success: retVal
});
}
Это скомпилированный Javascript
AjaxDataAccessLayer.prototype.ajaxCall = function (retVal, retError) {
$.ajax({
type: this.callType,
data: this.dataObject,
dataType: this.dataType,
url: this.url,
contentType: this.contentType,
traditional: this.traditional,
async: this._async,
error: retError,
success: retVal
});
};
return AjaxDataAccessLayer;
Это прекрасно обращается к контроллерам ASP.Net MVC, однако проблема, с которой я сталкиваюсь, не зависит от успеха или ошибки, обратный вызов всегда вызывает retError.
Это вызывающий Typescript
var _this = this;
var dataAccess = new DataAccess.AjaxDataAccessLayer(Fe.Upsm.Enums.AjaxCallType.Post,
Fe.Upsm.Enums.AjaxDataType.json,
"../../PrintQueue/DeletePrintQueueItems",
jsonObj);
dataAccess.ajaxCall(data => {
// success
new Fe.Upsm.Head().showGlobalNotification("Selected Items Deleted");
_this.refreshPrintQueueGrid();
(window as any).parent.refreshOperatorPrintQueueCount();
}, xhr => {
// failure
alert("An Error Occurred. Failed to update Note");
});
При переходе и просмотре этого состояния все в порядке, а ответ 200.

Итак, проблема (как упоминалось выше) всегда вызывает xhr \ retError независимо от успеха.
Вопрос: Как мне заставить его перейти на правильный обратный звонок?