【问题标题】:AJAX POST to MVC Controller showing 302 errorAJAX POST 到 MVC 控制器显示 302 错误
【发布时间】:2013-04-13 16:38:03
【问题描述】:

我想在我的 MVC 视图中执行 AJAX POST。我写了以下内容:

视图中的脚本代码

$('#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 found Error

【问题讨论】:

    标签: asp.net-mvc jquery asp.net-mvc-4 asp.net-ajax


    【解决方案1】:

    “302”响应代码是重定向。您的控制器操作显式返回一个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!!!");
         }
    });
    

    如果没有,您需要从控制器返回比重定向指令更有意义的内容。

    【讨论】:

    • 我不想重定向到另一个页面。我只想从 MVC 中该控制器的操作返回一些数据。
    • 那么你不应该返回一个RedirectToAction,它只是返回一个302重定向到另一个URL。
    • 那么我应该怎么做才能将 Json 值返回到视图中?
    猜你喜欢
    • 2016-08-17
    • 2019-09-27
    • 2012-12-30
    • 1970-01-01
    • 2012-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    相关资源
    最近更新 更多