【问题标题】:JSON data is not passing to the controller action and gives POST 500 internal server errorJSON 数据未传递给控制器​​操作并给出 POST 500 内部服务器错误
【发布时间】: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

标签: javascript c# jquery json asp.net-mvc


【解决方案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);
            }
        });
        }

【讨论】:

    猜你喜欢
    • 2016-08-21
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    相关资源
    最近更新 更多