繁体   English   中英

通过另一个 Ajax 请求加载的部分视图中的 Ajax 请求在 IE 11 中无法正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM