在 JavaScript 中设置 window.location 挂起

Setting window.location in JavaScript hangs

本文关键字:location 挂起 window 设置 JavaScript      更新时间:2023-09-26

我有一个 ASP.NET 的MVC应用程序。我的应用程序在客户端使用 jQuery。用户可以在多个字段中输入值,然后单击"刷新"。刷新行为异常。

单击刷新时,我执行以下 JavaScript:

function refresh() {
    var chosen = "(someField eq 'value')";
    try {
        if (chosen) {
            var url = 'http://localhost:8089/item&c=' + chosen;
            alert(url);
            window.location = url;
        } else {
            window.location = 'http://localhost:8089/item';
        }
        return false;
    } catch (ex1) {
        alert(ex1);
    }
}

chosen的值实际上是通过函数生成的。我注意到当我使用某种类型的控件时,页面会挂起。这是奇怪的,我可以看到在Fiddler中提出的请求。但是,我的控制器操作中的断点从未命中。如果我将 url 从alert调用复制并粘贴到地址栏中,则成功命中断点。所以,我完全糊涂了。

  1. 由于这涉及特定的控件,我最初认为这是一个JavaScript错误。但是,我在控制台中没有看到任何 JavaScript 错误。我还检查了是否有任何异常被吞噬,但我没有看到任何异常。

  2. 我在 Fiddler 中看到请求的事实意味着我正在访问 Web 服务器。但是,如果我在控制器操作的第一行有一个断点,我希望它会跳闸。在我使用该控件的情况下,它不会跳闸。如果我不使用控件,它确实会跳闸。《提琴手》中的结果位于"-"。它永远不会回来。另外,我的 ASP.NET 视图中没有出现异常。

我完全坚持这一点,并寻找潜在原因的想法。谢谢。

此行为通常是控制器的模型绑定期间出现问题的结果。

尝试的一个快速步骤是确保要发送的查询字符串值已正确编码。

var chosen = "(someField eq 'value')"; chosen = encodeURIComponent(chosen);

将消除模型绑定器可能存在的任何不良字符问题。