0

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

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

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

4

1 回答 1

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");
    }
});
于 2013-04-04T11:53:07.657 回答