通过ajax / jQuery $ .post将未经身份验证的用户重定向到不同的页面

时间:2012-04-05 15:13:16

标签: jquery asp.net ajax asp.net-mvc-3 partial-views

我有一个jQuery帖子调用如下:

$.post('/Controller/_PartialAction', { 'param1': data }, function(result) { });

这很好,一切正常,除非用户的身份验证cookie过期。

发生的事情是,已经存在将/Controller/_PartialAction重定向到登录页面的内容,但是在这种情况下,部分操作是部分视图,而我想重定向完整视图。

所以它已经将其重定向到登录页面,但我想重定向另一个页面,比如说我想重定向到/Controller/Index。有没有办法在ajax / jQuery调用中指定错误路径或重定向路径?

I.E。,类似这样的事情(这不存在,但就像我想做的那样)

$.post({success}, {redirect}, {error}, {data}, {function})

基本上,我怎样才能使用不同的url进行jQuery / ajax post调用以获取错误,以便我可以重定向到那个?

修改

重定向的是ajax调用本身。所以我无法从控制器重定向它。

2 个答案:

答案 0 :(得分:0)

因此,您希望根据用户的会话是否已过期来定义操作URL?

为什么不将操作URL定义为变量,然后在后调用中使用它:

// Use an asp.net function to work out whether session has expired
if( ... ) {
   // Session expired
   var url = 'Controller/Index';
} else {
   // Session alive
   var url = 'Controller/_PartialAction';
}

$.post(url, { 'param1': data }, function(result) { });

答案 1 :(得分:0)

我不完全确定你的目标是什么,但是(基于http://api.jquery.com/jQuery.post/)你可以使用底层的$ .ajax(http://api.jquery.com/jQuery.ajax/)和设置error功能?

或者您可以在成功回调中测试cookie的到期时间,然后根据该测试的结果重定向。