【问题标题】:Javascript with MVC not working in IE without browser debugger带有 MVC 的 Javascript 在没有浏览器调试器的情况下无法在 IE 中运行
【发布时间】:2014-09-17 13:43:31
【问题描述】:

我有一个混合了 MVC 控制器操作调用的以下 javascript 函数:

var loadPartialChapterAfterAnswer = function () {
        $.ajax({                
            url: '@Url.Action("IsAuthenticated", "Story")',
            type: "POST",
            success: function(data) {
                var isAuthenticated = data;
                if (isAuthenticated) {
                    if ('@Model.IsPersonality' == 'True') {
                        loadPartialChapter();
                    } else {
                        $("#chapterContainer").load('@Url.Action("GetNextQuestion", "Story")' + '?storyId=' + '@Model.Id', function () {
                            selectedCounter = 0;
                            showOnlyOneQuestion();
                        });
                    }
                } else {
                    window.location.href = '@Url.Action("RedirectToHomeRoute", "Home")';
                }
            },
            error: function() {
                alert("Error");
            }
        });
    };

每次我在页面(视图)上选择一个复选框时,都会调用此函数。代码在除 IE 之外的所有浏览器中都运行良好。在 IE 中,ajax url @Url.Action("IsAuthenticated", "Story") 每次都被调用 OK,但其他控制器操作 '@Url.Action("GetNextQuestion", "Story")' + '?storyId=' + '@Model.Id' 仅在 IE 的浏览器调试器打开时才被调用。当 IE 的调试器窗口关闭时,永远不会调用第二个 MVC 操作。

非常感谢任何帮助!

解决方案

我在页面开头添加了这段代码:

<script>
    $.ajaxSetup({
        cache: false
    });
</script>

现在它可以工作了!感谢大家的努力。

【问题讨论】:

  • 顺便说一句:'@Url.Action("GetNextQuestion", "Story")' + '?storyId=' + '@Model.Id' 和 '@Url.Action( "GetNextQuestion", "Story")' + '?storyId=@Model.Id'
  • IE 的问题是将几乎所有内容都存储在缓存中。在您的 ajax 中,您必须指定“cache: false”属性,以便请求具有时间戳,因此 IE 现在每次都会执行来自控制器的操作
  • @AlexArt - 是的,我知道,但这没什么大不了的......
  • @JorgeF - cache: false 不幸的是没有帮助......
  • On stackoverflow.com/questions/15949819/… ppl 说除非调试器打开,否则 IE 倾向于在 console.log() (和其他控制台方法)上崩溃。我尝试不包含包含控制台、console.log() 的脚本,但没有帮助。

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


【解决方案1】:

我读到一些关于 IE 的 JQuery 加载功能问题 尝试将其替换为带有cache: false 选项的常规$.ajax,希望它能解决问题。

查看topic

【讨论】:

    【解决方案2】:

    向此添加控制器:@Url.Action("GetNextQuestion")' 如果没有指定控制器,它会放置最后返回视图的控制器。

    【讨论】:

    • 我添加了控制器名称,但没有帮助。
    • @kiriz 你试过在其他浏览器中测试这个吗?
    • 正如我在问题中所说,此功能在所有其他浏览器中均 100% 有效。好的,我只在 Chrome 和 Firefox 中测试过。 ;)
    • @kiriz 你有没有注意到这些浏览器之间 razor 生成的 url 有什么不同?您可以在 IE 中加载页面而不启用它的浏览器调试器,并且在加载完成后启用它并检查生成的 url。或者您可以在文档就绪事件时提醒它,以避免使用调试器。
    • 我解决了我的问题。你可以在我的问题底部查看它。
    猜你喜欢
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 2020-10-07
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多