2013-11-15 25 views
31

Sayfamı yönlendirmez aşağıdadır: ajax sonrası İşteRedirectToAction, başarılı jquery ajax sonrası çalışamaz mı?

[HttpPost] 
    public ActionResult GoHome() 
    { 
     return RedirectToAction("Index", "Home"); 
    } 

edilir: Burada MVC kodudur

$.support.cors = true; 

      $.ajax({ 
       type: "POST", 
       url: "http://localhost/UserAccount/GoHome", 
       dataType: 'json', 
       crossDomain: true 
      }); 

sonrası başarılı olduğunu ve GoHome eylemi hists zaman değil mi Ana Denetleyicinin Dizin Eylemine yönlendir.

+0

'$ .support.cors = true;' gerekli değildir. 'crossDomain: true' gerekli değildir. –

cevap

55

Bir AJAX defterinden yönlendirilemezsiniz. Ancak, tarayıcıyı yeniden yönlendirmek istediğiniz URL'yi döndürebilir ve Javascript'ten yönlendirebilirsiniz.

Kontrolör

[HttpPost] 
public ActionResult GoHome() 
{ 
    return Json(Url.Action("Index", "Home")); 
} 

JavaScript

 $.ajax({ 
      type: "POST", 
      url: "http://localhost/UserAccount/GoHome", 
      dataType: 'json', 
      crossDomain: true, 
      success: function(data){ 
       window.location.href = data; 
      } 
     }); 
+0

Merhaba, Bu özellikle güvenlik için mi, bu yüzden bir kullanıcı tarayıcısını kötü amaçlı bir betiğe sahip olabilecek bir sayfaya yönlendiremezsiniz? – xaisoft

+0

@xaisoft Sanırım bir güvenlik kararından daha fazla işlevsellik eksikliği. –

+0

@ xaisoft Hayır, bir HTTP sınırlamasıdır. Normal bir PRG (Post, Yönlendirme, Get) sırasında, sunucu bir POST formu alır, işler ve tarayıcının aldığı ve izlediği başka bir sayfaya bir HTTP 301/302 yönlendirmesini döndürür. JS/AJAX, bir 301/302 yönlendirme işleminin nasıl ele alınacağını bilmez, çünkü bir HTTP 200 yanıtı onunla birlikte yüklenen bir yük (Json, HTML, metin) ile bekler. – Tommy

İlgili konular