我想使用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);
}
答案 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");
}