2013-11-15 16 views
31

Sau đây không chuyển hướng trang web của tôi: Đây là mã MVC:RedirectToAction không hoạt động sau khi đăng jquery thành công ajax?

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

Dưới đây là bài ajax:

$.support.cors = true; 

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

Các bài thành công và khi nó hists hành động GoHome nó không chuyển hướng đến hành động Index của Home Controller.

+0

'$ .support.cors = true;' là không cần thiết. 'crossDomain: true' là không cần thiết. –

Trả lời

55

Bạn không thể chuyển hướng từ bài đăng AJAX. Tuy nhiên, bạn có thể trả về URL mà bạn muốn chuyển hướng trình duyệt và chuyển hướng từ Javascript.

khiển

[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

Xin chào, Đây có phải là chủ yếu để bảo mật, do đó bạn không thể chuyển hướng trình duyệt của người dùng đến một số trang có thể có tập lệnh độc hại không? – xaisoft

+0

@xaisoft tôi nghĩ rằng nó thiếu tính năng hơn là một quyết định bảo mật. –

+0

@xaisoft Không, nó là một hạn chế HTTP. Trong một PRG bình thường (Post, Redirect, Get), máy chủ nhận được một biểu mẫu POST, xử lý nó và trả về một chuyển hướng HTTP 301/302 đến một trang khác mà trình duyệt nhận và theo dõi. JS/AJAX không biết làm thế nào để xử lý một chuyển hướng 301/302 vì nó đang mong đợi một phản ứng HTTP 200 với một tải trọng (Json, HTML, văn bản) gắn liền với nó. – Tommy

Các vấn đề liên quan