2013-05-02 5 views
6

Ich möchte auf bestimmte Website mit C# umleiten.Response.redirect wird nicht in c weitergeleitet #

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#: Ich habe den Code wie geschrieben

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

Antwort

6

Sie nicht eine Umleitung auf einer Ajax-Post tun, das wird gebe dir einen 302 Fehler. Was sollten Sie ist dabei die URL von Ihnen Controller-Methode

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

und dann Umleitung von Ihrem Client-Code zurück:

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

Dies liegt daran, dass jQuery die Umleitung Anweisung Aufnehmen und nichts zu tun damit. Bedenken Sie, dass Weiterleitungen vom Browser und nicht vom Server gehandhabt werden.

Versuchen Sie, eine complete Rückruf Ihre AJAX-Aufruf Hinzufügen der Umleitung Anweisung zu behandeln (zum Beispiel nach dem success Rückruf):

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

Dies sollte die 302, dass die Methode zurückgibt handhaben und die Umleitung durchzuführen. Alternativ können Sie die URL im JSON wie von v vorgeschlagen zurückgeben.

0

In Controller

Wenn Sie eine andere Website umgeleitet werden soll, einfach können wir wie verwenden,

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

Dies wird für jQuery AJAX-Anforderungen nicht. –

Verwandte Themen