2013-04-20 161 views
6

我想在我的MVC視圖中進行AJAX POST。我已經寫了以下內容:AJAX POST MVC Controller顯示302錯誤

腳本代碼在瀏覽

$('#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!!!"); 
     } 
    }); 
}); 

控制器代碼

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

但在AJAX POST我收到302發現錯誤

回答

7

'302'響應代碼是redire克拉。您的控制器操作明確返回RedirectToAction,它只返回302.由於此重定向指令由您的AJAX調用消耗,而不是由您的瀏覽器直接消耗,所以如果您希望瀏覽器被重定向,則需要執行以下操作:

$.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!!!"); 
    } 
}); 

如果不是,則需要返回比控制器中的重定向指令更有意義的內容。

+0

我不想重定向到另一頁。 我只想從MVC中該控制器的操作返回一些數據。 – 2013-04-23 09:55:06

+0

然後你不應該返回一個'RedirectToAction',它只是返回一個302重定向到另一個URL。 – 2013-04-23 10:23:15

+0

那麼我應該怎麼做才能將Json值返回給視圖? – 2013-04-23 10:24:08