[英]Ajax request within partial view loaded through another Ajax request does not work properly in IE 11
以下是我的 ASP.NET MVC 应用程序中的确切场景:
父页面有 3 个选项卡,编写了以下 javascript 以将单击事件绑定到每个选项卡:
每个函数调用一个控制器操作(在 data-url 属性中指定),并将结果呈现在预期显示在“ContactMainContainer”div 中的局部视图中。
jQuery(document).ready(function () {
$('#ContactTabs a').on('click', function () {
var dr = $(this).closest('li');
var url = $(this).attr("data-url");
if (url != undefined && url != '') {
var projectDetailTabModel = $("#ContactID").val();
$('#successDiv').hide();
$('#errorDiv').hide();
$.ajax({
type: "POST",
url: getUrlWithTabId(url),
data: projectDetailTabModel,
success: function (result) {
$('#ContactMainContainer').html(result);
},
error: function (errMessage) {
if (errMessage != null && errMessage.length > 0) {
$("#errorDiv").show();
$("#errorText").html(errMessage);
}
}
});
}
});
});
部分视图之一的内容是使用 javascripts(主要是 ajax 调用)构建的。 (我无法将整个 javascript 放在这里,因为它是一个客户项目和保密协议,而且 javascript 库太大,无法放在这里)。
问题在于,当用户导航到该特定选项卡(使用 Ajax 调用)时,执行和呈现结果需要很长时间。 但在那之后,如果用户点击任何其他选项卡,浏览器会无限地卡住并挂起。
此问题仅在 IE11 中存在,并且在所有其他浏览器(Chrome、firefox 等)中运行良好。
任何人都可以请建议可能是什么原因?
这是一个缓存问题,IE 以缓存着称。 您需要确保在 Ajax 调用中将捕获设置为 false
在 AJAX 调用中设置缓存属性
$.ajax(url, {
dataType: 'json',
cache : false,
//Other things ...
}
我更喜欢在请求 URL 中使用cache buster
,即添加当前时间戳作为参数,这样它就不能被缓存
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.