如果我使用发布的here解决方案,我将无法转移到新页面。但是,如果我在控制台中检查$.ajax()
调用,实际的.aspx页面似乎在响应正文中。所以我的猜测是.ashx被重定向到.aspx。
void ProcessRequest(HttpContext context)
{
context.Response.Redirect(newUrl);
}
如何从发送ajax请求的.aspx页面重定向用户?我是否需要从我的handler.ashx上调用.aspx上的方法?
答案 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");
}
});