只有IE 11失去了关注ajax调用有时ASP.NET MVC4

时间:2017-03-08 22:32:34

标签: javascript jquery ajax asp.net-mvc-4 internet-explorer-11

我正在使用一个boostrap对话框来输入一个包含数量的列表。提交表单后,打开对话框检查数量是否已更新,似乎是陈旧的数据。我与ajax调用控制器,然后返回数据库以获取更新的信息。但是当我在控制器中设置断点时(在服务器端)它永远不会命中。当我在开发人员工具和调试器中调用ajax的函数设置断点时,它只会解决问题。我也没有看到任何控制台错误。

我没有Firefox的问题,只是IE11 ..这里是代码:

<script type="text/javascript">
    function LocationModal() {

        $("#GetLocBtn").attr("disabled", "disabled");
        var partNumber = $("#PartNum").val();
        var Condition = 'Z';
        var urlQry;
        var receiveIsChecked = document.getElementById('Receive').checked;

        var src = 'removed for security';
        $.ajax({
            type: "GET",
            url: src,
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data: { partNumber: partNumber, CCODE: Condition },
            beforeSend: function () {
            },
            success: function (data) {                     
              $("#LocationModalContainer").html(data.LocationModal);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
            }
        });
    };

1 个答案:

答案 0 :(得分:2)

问题确实是IE缓存了Ajax调用的结果。您可以通过向每次通话添加cache: false来阻止此行为,例如您已发现,或在拨打任何电话之前通过ajaxSetup进行全局设置。

$.ajaxSetup({
    cache: false
});

jQuery documentation中不鼓励使用ajaxSetup,但如果您不使用任何可能依赖于正常行为的插件并希望快速确保您自己的任何插件,则可能是一个很好的解决方案。缓存ajax调用。

就个人而言,我怀疑文档中提到的干扰风险在缓存设置方面有多真实,因为基本上你只是让IE的行为与其他浏览器一样。