在JavaScript中设置window.location会挂起

时间:2015-01-27 14:42:30

标签: javascript asp.net-mvc fiddler

我有一个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提出的要求。然而,我在控制器动作中的断点从未被击中。如果我将alert调用中的网址复制并粘贴到地址栏中,我的断点就会成功点击。所以,我完全糊涂了。

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

  2. 我在Fiddler看到请求的事实意味着我要进入网络服务器。然而,如果我在控制器动作的第一行有一个断点,我希望它会跳闸。它在我使用控件的场景中不会跳闸。如果我不使用控件,它会跳闸。 Fiddler的结果位于' - '。它永远不会回来。另外,我的ASP.NET视图中没有抛出异常。

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

1 个答案:

答案 0 :(得分:0)

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

快速尝试尝试确保正在发送的查询字符串值已正确编码。

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

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