Response.redirect不在c#中重定向

时间:2013-05-02 05:59:29

标签: c# asp.net-mvc

我想使用c#重定向到某个网站。我编写的代码如下:

HTML:

 <button id="Buy" class="k-button">Button</button>

脚本:

    $("#Buy").live('click', function () {
        $.ajax({                      
        url: "/Home/Redirect",
        data: JSON.stringify
        ({

        }),
        cache: false,
        dataType: "json",                       
        success: function (str) {
        },
        type: 'POST',
        contentType: 'application/json; charset=utf-8'
        });
      });

C#:

   public ActionResult Redirect()
    {
        Response.Redirect("http://www.google.com");          
        return Json("suc",JsonRequestBehavior.AllowGet);
    }

3 个答案:

答案 0 :(得分:6)

您无法在ajax帖子上进行重定向,这会给您302错误。你应该做的是从你的控制器方法返回url

public ActionResult Redirect()
{
    return Json(the_url);
}

然后从您的客户端代码重定向:

$.ajax({ 
    // your config goes here
    success: function(result) {
        window.location.replace(result);
    }
});

答案 1 :(得分:1)

这是因为jQuery正在接收重定向指令并且不执行任何操作。请记住,重定向是由浏览器处理的,而不是服务器。

尝试在AJAX调用中添加complete回调以处理重定向指令(例如,在success回调之后):

complete: function(resp) {
    if (resp.code == 302) {
        top.location.href = resp.getResponseHeader('Location');
    }
}

这应该处理该方法返回的302并执行重定向。或者,以von v建议的方式返回JSON中的URL。

答案 2 :(得分:0)

在控制器中,

如果您想重定向其他网站,我们只需使用

即可
public ActionResult Redirect()
{
        //return View();
        return Redirect("http://www.google.com");
}