JSON 数据未传递给控制器​​操作并给出 POST 500 内部服务器错误

Posted

技术标签:

【中文标题】JSON 数据未传递给控制器​​操作并给出 POST 500 内部服务器错误【英文标题】:JSON data is not passing to the controller action and gives POST 500 internal server error 【发布时间】:2019-11-11 12:36:24 【问题描述】:

我有一个名为 Pizzas.json 的文件。我已经从这个文件中读取了数据,但是我做了一个 jquery ajax 调用,它没有传递给控制器​​并给出“POST 500 internal server error”。在图片中查看我的代码:

查看

<script src="https://code.jquery.com/jquery-3.1.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
    function getToppingsList() 
       $.getJSON("../pizzas.json", passDataToController);
       


        //var newdata = JSON.parse(data);
        //alert(requestData);
        function passDataToController(json) 
        $.ajax(
            type: "POST",
            url: "@Url.Action("GetToppingsList","ToppingsList")",
            contentType: "application/json",
            data: JSON.stringify(json),
            success: function (data)  alert(data); ,
            failure: function (errMsg) 
                alert(errMsg);
            
        );
    
</script>
<input type="button" value="Get Toppings List" id="Render JSON" onclick="getToppingsList()" />

控制器

public class ToppingsListController : Controller
                

    // GET: ToppingsList
    public ActionResult Index()
    
        return View();
    
    [HttpPost]
    public JsonResult GetToppingsList(List<string> ToppingsListArgument)
    
        //ar name = "waqas";
        return Json(ToppingsListArgument);
    

查看图片是否有错误:

【问题讨论】:

不要JSON.stringify() 你的数据 - jQuery 为你做到了。更改:data: JSON.stringify(json),data: json, @RandyCasburn 谢谢,但现在我在动作参数中收到空值 @WaqasQureshi - 那么你应该 edit 你提出问题并重写它以演示新问题。 你的参数类型错误 @WaqasQureshi 用于新问题更改列表 ToppingsListArgument 到字符串 ToppingsListArgument 【参考方案1】:

尝试检查 JSON 是否包含任何数据 试试这段代码

function passDataToController(json) 
        var ToppingsListArgument = JSON.stringify(json) ; 
   if(ToppingsListArgument !=null && ToppingsListArgument!=undfind)
       
        $.ajax(
            type: "POST",
            url: "@Url.Action("GetToppingsList","ToppingsList")",
            contentType: "application/json",
            data: ToppingsListArgument,
            success: function (data)  alert(data); ,
            failure: function (errMsg) 
                alert(errMsg);
            
        );
        

【讨论】:

以上是关于JSON 数据未传递给控制器​​操作并给出 POST 500 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net将json传递给动作,但服务器端的数据为空

如何将对象类型的 json 数组传递给 MVC 控制器类

OpenCart 将数组返回到 JSON 并传递给 jQuery

如何使用 json 将复杂类型传递给 ASP.NET MVC 控制器

Laravel 5:在路由中获取 ajax 数据并传递给控制器

从 JSON 中提取值并传递给 Swift 中的另一个 ViewController