首页 > 解决方案 > 为什么 Asp.net Core 无法读取 Ajax 参数?

问题描述

我正在使用 Asp.net MVC Core 和 Jquery Ajax 插入我的数据库。

问题总结
Home-Controller的Action中看不到参数。这意味着我可以成功执行 Ajax 插件,并且可以使用跟踪点毫无问题地访问 Home 控制器,但无法检索传递的值“Vals”。

我试图
用 Ajax 块制作一个 Jquery 插件来将 JSON 字符串发送到 Home-Controller

jQuery插件

(function ($) {
    $.fn.CallSqlServer = function (URL, JsonVal)
    {
        var vals = JSON.stringify(JsonVal);
        var msg;
                $.ajax({
                    type: "Get",
                    url: URL,
                    data: vals,
                    dataType: "json",
                    contentType: 'application/json; charset=utf-8',
                    success: function (data) {
                        msg = data.msg;
                    },
                    error: function () {
                        msg = "Error occured!!";
                    }
                });
        return msg;
    }
})(jQuery);

我这样称呼它

    $('#btninsert').click(function () {
        var Student = {
            ID: '10001',
            Name: 'Shashangka',
            Age: 31
        };
        $('#btninsert').CallSqlServer("/Home/Index/",Student);
    });

Home-Controller => 动作索引

[HttpGet]
public IActionResult Index(string vals)
{
    return View(vals);
}

标签: jqueryajaxasp.net-mvcasp.net-corejquery-plugins

解决方案


数据应该是表示 URL 查询参数和值的键值对:

(function ($) {
    $.fn.CallSqlServer = function (URL, JsonVal)
    {
        var vals = JSON.stringify(JsonVal);
        var msg;
                $.ajax({
                    type: "Get",
                    url: URL,
                    data:{
                       "vals": vals
                    },
                    dataType: "json",
                    contentType: 'application/json; charset=utf-8',
                    success: function (data) {
                        msg = data.msg;
                    },
                    error: function () {
                        msg = "Error occured!!";
                    }
                });
        return msg;
    }
})(jQuery);

推荐阅读