2013-04-20 37 views
6

Tôi muốn thực hiện AJAX POST trong Chế độ xem MVC của mình. Tôi đã viết như sau:AJAX POST tới Bộ điều khiển MVC hiển thị lỗi 302

Script Mã trong Xem

$('#media-search').click(function() { 
    var data = { key: $('#search-query').val() }; 

    $.ajax({ 
     type: 'POST', 
     url: '/Builder/Search', 
     data: JSON.stringify(data), 
     dataType: 'json', 
     contentType: 'application/json; charset=utf-8', 
     success: function (data) { 
      $('.builder').empty(); 
       alert("Key Passed Successfully!!!"); 
     } 
    }); 
}); 

điều khiển Mã

[HttpPost] 
public ActionResult Search(string key) 
{ 
    return RedirectToAction("Simple", new { key=key }); 
} 

Nhưng trên AJAX POST Tôi nhận được Lỗi 302 tìm thấy

Trả lời

7

Mã phản hồi '302' là lỗi ct. Khi hành động chuyển hướng này được sử dụng bởi cuộc gọi AJAX của bạn và không trực tiếp bởi trình duyệt của bạn, nếu bạn muốn trình duyệt của bạn được chuyển hướng, bạn sẽ cần phải làm như sau:

$.ajax({ 
    type: 'POST', 
    url: '/Builder/Search', 
    data: JSON.stringify(data), 
    dataType: 'json', 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 
      if (data.redirect) { 
       window.location.href = data.redirect; 
      } 
      $('.builder').empty(); 
      alert("Key Passed Successfully!!!"); 
    } 
}); 

Nếu không, bạn sẽ cần phải trả lại điều gì đó có ý nghĩa hơn hướng dẫn chuyển hướng từ bộ điều khiển của bạn.

+0

Tôi không muốn chuyển hướng đến một Trang khác. Tôi chỉ muốn trả lại một số dữ liệu từ hành động của Bộ điều khiển đó trong MVC. –

+0

Sau đó, bạn không nên trả về 'RedirectToAction', điều này chỉ trả về chuyển hướng 302 cho một URL khác. –

+0

thì tôi nên làm gì để trả lại giá trị Json cho chế độ xem? –

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