如何在jQuery Ajax调用之后管理重定向请求我正在使用$.post()Ajax调用servlet,然后使用生成的HTML片段替换div用户当前页面中的元素。但是,如果会话超时,服务器会发送重定向指令以将用户发送到登录页面。在这种情况下,jQuery正在用div登录页面的内容替换元素,迫使用户的目光确实见证了罕见的场景。如何使用jQuery 1.2.6从Ajax调用管理重定向指令?
4 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
我解决了这个问题:
向响应添加自定义标头:
public ActionResult Index(){ if (!HttpContext.User.Identity.IsAuthenticated) { HttpContext.Response.AddHeader("REQUIRES_AUTH","1"); } return View();}将JavaScript函数绑定到
ajaxSuccess事件并检查标头是否存在:$(document).ajaxSuccess(function(event, request, settings) { if (request.getResponseHeader('REQUIRES_AUTH') === '1') { window.location = '/'; }});
富国沪深
TA贡献1790条经验 获得超9个赞
最终实现的解决方案是使用包装器来执行Ajax调用的回调函数,并在此包装器中检查返回的HTML块上是否存在特定元素。如果找到该元素,则包装器执行重定向。如果没有,则包装器将调用转发给实际的回调函数。
例如,我们的包装函数类似于:
function cbWrapper(data, funct){
if($("#myForm", data).length > 0)
top.location.href="login.htm";//redirection
else
funct(data);}然后,在进行Ajax调用时,我们使用了类似的东西:
$.post("myAjaxHandler",
{
param1: foo,
param2: bar },
function(data){
cbWrapper(data, myActualCB);
},
"html");这对我们有用,因为所有Ajax调用总是在我们用来替换页面的DIV元素中返回HTML。此外,我们只需要重定向到登录页面。
添加回答
举报
0/150
提交
取消
