2013-05-02 12 views
6

Chcę przekierować do określonej witryny przy użyciu C#. Pisałem kod jak:Response.redirect nie przekierowuje w C#

HTML:

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

Script:

$("#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); 
    } 

Odpowiedz

6

Nie można zrobić przekierowanie na stanowisku Ajax, który będzie da ci błąd 302. Co należy robić to, aby powrócić URL z ciebie metody kontrolera

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

a następnie przekierować od klienta Kod producenta:

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

To dlatego, że jQuery jest podniesienie instrukcje przekierowania i nic nie robi z tym. Pamiętaj, że przekierowania są obsługiwane przez przeglądarkę, a nie przez serwer.

Spróbuj dodać complete oddzwanianie do wywołania AJAX do obsługi instrukcji przekierowania (np po success zwrotnego):

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

ten powinien obsługiwać 302 że wraca metody i wykonać przekierowanie. Alternatywnie, zwróć adres URL w JSON, tak jak sugeruje von v.

0

kontroler,

Jeśli chcesz przekierować inną stronę internetową, po prostu jak możemy użyć,

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

To nie będzie działać dla żądań AJAX jQuery. –

Powiązane problemy