2013-05-02 21 views
6

Desidero reindirizzare a determinati siti Web utilizzando C#. Ho scritto il codice come:Response.redirect non sta reindirizzando in 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); 
    } 

risposta

6

Non si può fare un redirect su un posto ajax, che la volontà darti un errore 302. Che cosa si dovrebbe fare è quello di restituire l'URL da te metodo

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

controller e quindi reindirizzare dal client-code:

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

Questo perché jQuery è in ripresa l'istruzione di reindirizzamento e di non fare nulla con esso. Ricorda che i reindirizzamenti sono gestiti dal browser, non dal server.

provare ad aggiungere un callback complete alla chiamata AJAX per gestire l'istruzione di reindirizzamento (ad esempio, dopo la vostra success callback):

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

Questo dovrebbe gestire la 302 che restituisce il metodo ed eseguire il redirect. In alternativa, restituire l'URL nel JSON come suggerito da von v.

0

Nel Controller,

Se si desidera reindirizzare un altro sito web, semplicemente possiamo usare come,

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

questo non funzionerà per le richieste di jQuery AJAX. –

Problemi correlati