gpt4 book ai didi

javascript - typescript : Ajax call call always calling Error rather than success on success

转载 作者:行者123 更新时间:2023-12-01 02:05:09 29 4
gpt4 key购买 nike

在 typescript 中,我有一个 DataAccess 类,以便所有 Ajax 调用都通过单个对象进行路由,以节省应用程序中许多地方的代码重复。

在使用这种方法时,我需要使用回调将响应返回到调用类,以便可以相应地处理成功和错误。

这是 typescript

 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 Controller 的调用完全正常,但是我遇到的问题是,无论成功还是错误,回调总是 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。

enter image description here

因此,问题(如上所述)无论成功与否总是调用 xhr\retError 。

问题:如何让它进入正确的回调?

最佳答案

在错误处理程序中,您没有传递所有参数,因此您仅检查请求是否成功完成。但是,此后可能会出现错误,例如处理响应时。您可以像这样更好地处理错误:

dataAccess.ajaxCall(data => {
// success
new Fe.Upsm.Head().showGlobalNotification("Selected Items Deleted");
_this.refreshPrintQueueGrid();
(window as any).parent.refreshOperatorPrintQueueCount();
}, (xhr, errorText, errorThrown => {
// failure
console.log(xhr, errorTest, errorThrown);
alert("An Error Occurred. Failed to update Note");
});

根据使用此方法的发现,错误在于您的 Controller 返回空响应,因此当 jQuery 尝试解析它们时您会收到异常,因为空字符串不是有效的 JSON。

关于javascript - typescript : Ajax call call always calling Error rather than success on success,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50169357/

29 4 0