6

我想使用 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);
    }
4

3 回答 3

6

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

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

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

$.ajax({ 
    // your config goes here
    success: function(result) {
        window.location.replace(result);
    }
});
于 2013-05-02T06:05:45.117 回答
1

这是因为 jQuery 正在接收重定向指令并且什么都不做。请记住,重定向是由浏览器而不是服务器处理的。

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

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

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

于 2013-05-02T06:06:38.120 回答
0

在控制器中,

如果您想重定向另一个网站,我们可以简单地使用,

public ActionResult Redirect()
{
        //return View();
        return Redirect("http://www.google.com");
}
于 2013-05-02T06:14:42.267 回答