【发布时间】:2016-06-22 11:05:49
【问题描述】:
我在一个项目中使用 Typescript 和 jQuery ajax。在其中一个应用程序页面(类似于仪表板)中,我有 15 个网格,每个网格都有 WebApi 调用和一些额外的调用来呈现一些组合框。除此之外,在我的应用程序标题中,我还有其他组件正在为用户和其他一些组合框请求数据。最后,当我加载该特定页面时,ajax 调用的数量将达到 24。
在 Chrome、Mozilla 和 IE >= 10 上一切正常。
在 IE9 中,有时会发生来自这 24 个的一个特定调用不进入 ajax done 回调。这个电话没有什么特别的。在网络中,它的请求是从后端返回的 status 200 ,所以它应该进入回调。收到的 JSON 是有效的,ajax 调用每次都是一样的,只是表现不同。
如果我删除所有其他调用并只留下有问题的调用,则问题不再发生。
IE9是否存在短时间内ajax调用次数的问题?
我正在使用 Typescript,我发出请求的函数如下。
public Request(controllerActionName: string, method: string, data?: Object, headersData?: Object, countRequest: boolean = true) {
let dataType = "json";
let headers = _.extend({ "accept": "application/json; odata=verbose" }, headersData);
if (method === "DELETE") {
dataType = "";
}
if (BaseWebApi.asyncRequestCount === 0 && countRequest) {
PubSub.publishSync(OsiIDs.NotifyAsyncOperation, true);
}
console.log(controllerActionName + "/" + method + " ---- prevCount: " + BaseWebApi.asyncRequestCount + " ---- nextCount: " + (BaseWebApi.asyncRequestCount + 1));
countRequest && BaseWebApi.asyncRequestCount++;
let response = $.ajax({
url: this.module + controllerActionName,
method: method,
headers: headers,
contentType: (method.toLowerCase() === "get" ? "" : "application/json"),
dataType: dataType,
data: (method.toLowerCase() === "get" ? data : JSON.stringify(data))
});
response.done(() => {
if (BaseWebApi.asyncRequestCount === 1 && countRequest) {
PubSub.publishSync(OsiIDs.NotifyAsyncOperation, false);
}
console.log(controllerActionName + "/" + method + " ---- prevCount: " + BaseWebApi.asyncRequestCount + " ---- nextCount: " + (BaseWebApi.asyncRequestCount - 1));
countRequest && BaseWebApi.asyncRequestCount--;
}).fail((data, code, message) => {
if (BaseWebApi.asyncRequestCount === 1 && countRequest) {
PubSub.publishSync(OsiIDs.NotifyAsyncOperation, false);
}
console.log(controllerActionName + "/" + method + " ---- prevCount: " + BaseWebApi.asyncRequestCount + " ---- nextCount: " + (BaseWebApi.asyncRequestCount - 1));
countRequest && BaseWebApi.asyncRequestCount--;
});
return response;
}
绑定 ajax 调用会解决这个问题吗?
谢谢
【问题讨论】:
标签: jquery ajax callback internet-explorer-9