2013-05-02 75 views
6

我想使用c#重定向到某個網站。我曾經這樣寫代碼:Response.redirect不在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); 
    } 

回答

6

你不能做一個ajax後重定向,這將給你一個302錯誤。你應該做的是從你的控制器方法

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

返回的URL,然後從客戶端代碼重定向:

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

這是因爲jQuery是拿起重定向指令,無所事事用它。請記住,重定向是由瀏覽器處理的,而不是服務器處理的。

嘗試添加complete回調到您的AJAX調用來處理重定向指令(例如後您success回調):

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

這應該處理302,該方法返回並執行重定向。或者,按von v的建議返回JSON中的URL。

0

在控制器,

如果你想重定向另一個網站,只要我們可以像使用,

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

這不會對jQuery的AJAX請求工作。 – 2013-05-02 06:57:00

相關問題