AJAX POST 到 MVC 控制器显示 302 错误

Posted

技术标签:

【中文标题】AJAX POST 到 MVC 控制器显示 302 错误【英文标题】:AJAX POST to MVC Controller showing 302 error 【发布时间】: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

【问题讨论】:

【参考方案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 值返回到视图中? 是的,看看JsonResult - geekswithblogs.net/michelotti/archive/2008/06/28/…

以上是关于AJAX POST 到 MVC 控制器显示 302 错误的主要内容,如果未能解决你的问题,请参考以下文章

AJAX POST 到 Web API 控制器和 CSRF

Ajax Post 请求到 Spring MVC

将多个参数从 ajax post 传递到 asp.net mvc 控制器

确保控制器方法实际上是由 ajax 或 mvc 中的 POST 请求调用的

如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?

为啥 jQuery AJAX Post Content-Type=application/json 到 MVC 控制器操作方法导致空参数