2013-04-20 158 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