微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么ajax发送参数到控制器为空?

如何解决为什么ajax发送参数到控制器为空?

我通过ajax向控制器发送发布请求:

这是我在cshtml文件中的代码

<script>
    $("#btnSeachAjax").click(function () {
        var token = $('input[name="__RequestVerificationToken"]').val();    
        $.ajax({
            url: '@Url.Action("Search")',data: { id: "1",title:"ba"},contentType: 'application/json',type: 'POST',headers: {
                "RequestVerificationToken": token
            },success: function (data) {
                $("#data").html(data);
            },error: function (req,status,error) {
                alert(error);
            }
        });
        return false;
    });
</script>

这是我在控制器中的代码

 [HttpPost,ActionName("Search")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Search([FromBody] string id,string title)
        {
            var movie = await _context.Movies.FindAsync(id);
            return View(movie);
        }

控制器中idtitle的值= null

为什么ajax向控制器发送参数为空?

我使用Asp.net mvc net core 3.1。

解决方法

public async Task<IActionResult> Search([FromBody] string id,string title)

id的值,控制器中的标题= null。

根据您的操作方法和可接受的参数,您可以尝试如下修改Ajax代码。

$.ajax({
    url: '@Url.Action("Search")'+'?title=ba',data: JSON.stringify("1"),contentType: 'application/json',type: 'POST',//...

此外,您可以创建一个视图模型并修改您的操作以接受一个复杂的类型参数,如下所示。

public class MyData
{
    public string Id { get; set; }
    public string Title { get; set; }
}

动作方法

public async Task<IActionResult> Search([FromBody] MyData myData)
{
    //...

在JS客户端上

$.ajax({
    url: '@Url.Action("Search")',data: JSON.stringify({ id: "1",title: "ba" }),//...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。