使用$ .ajax()从.ashx重定向到.aspx

时间:2013-04-04 10:19:41

标签: c# asp.net ajax

如果我使用发布的here解决方案,我将无法转移到新页面。但是,如果我在控制台中检查$.ajax()调用,实际的.aspx页面似乎在响应正文中。所以我的猜测是.ashx被重定向到.aspx。

void ProcessRequest(HttpContext context)
{
     context.Response.Redirect(newUrl);
}

如何从发送ajax请求的.aspx页面重定向用户?我是否需要从我的handler.ashx上调用.aspx上的方法?

1 个答案:

答案 0 :(得分:1)

Response.Redirect命令只不过是浏览器移动到其他页面的说明。此命令首先是浏览器的标头指令。还有一个javascript小脚本写在页面上,以防标题失败。

现在,当您使用Ajax进行调用时(无论其处理程序或页面),结果返回到页面但在ajax缓冲区内,重定向标头被“吃掉”而不是去浏览器本身来运行它们。因此,不能通过ajax调用直接完成重定向。

你应该做的是将信号发送到你的ajax电话,然后看到那个信号/标志并使用javascript调用进行重定向window.location.replace("redirectPage.aspx")

例如:

$.ajax({
    url: "action.ashx",
    type: "GET",
    dataType: 'json',
    success: function(data)     
    {
        if(data.NeedRedirect)
            window.location.replace("WhereToMove.aspx");
    },
    error: function(responseText, textStatus, XMLHttpRequest) 
    {
        window.location.replace("WhereToMove.aspx");
    }
});