尽管Fiddler显示相反的情况,为什么浏览器不会进行重定向

时间:2011-01-13 16:54:44

标签: jquery asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing

“选择”动作由XmlHttpRequest调用。

$.ajax(
            {
                async: false,
                url: 'Project/Select/1'                    
            });

“选择”操作会重定向

[HttpPost]
    public ActionResult Select(core_User user)
    {
        int id = 0;
        if (int.TryParse(this.RouteData.Values["id"].ToString(), out id))
        {
            Project.Load(id);
            return Redirect("~/general-settings"));
        }
        return new EmptyResult();
    }

在Fiddler中,我发现重定向请求已发送,但是,浏览器不会进行重定向。它保留在上一页。

以下是REDIRECT请求的RAW。

GET http://localhost:26838/general-settings HTTP/1.1
Host: localhost:26838
Connection: keep-alive
Referer: http://localhost:26838/project-manager
X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) 
Chrome/8.0.552.237 Safari/534.10
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: ASP.NET_SessionId=t2242xxnk4bf0qk0gkvyrji2

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

我建议您follow this example使用类似的Stackoverflow问题。

它向您展示了如何在重定向情况下使用$.ajax。请注意,使用window.location.replace()而不是直接设置位置会更好。