Ajax请求:Json数据未传递到控制器

时间:2019-05-16 16:05:16

标签: javascript json ajax asp.net-core razor

我正在构建一个程序,用于在ASP.NET Core中搜索文档。我正在通过Ajax请求将搜索数据从文本框传递到控制器,但控制器未接收到字符串。

我尝试更改ajaxData字段的定义方式,在“搜索”周围添加引号,甚至将整个内容转换为字符串,但我无法将其传递给控制器​​。

这是请求的代码:

ajaxData = {search: $("#textSearchBox").val()}

console.log(ajaxData);

$.ajax({
    type: 'POST',
    url: "@Url.Action("GetDocuments", "DocumentSearchApi")",
    data: ajaxData,
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    error: function (e) {
        //Error Function
    },
    success: function (jsonData) {
        //Success Function
    },
    fail: function (data) {
        //Fail Function
    }
});

这是Controller的GetDocuments函数的顶部:

[Route("GetDocuments")]
public async Task<IActionResult> GetDocuments(string search)
{

任何地方都没有错误消息。控制台显示了一个包含“搜索:“测试””的对象,但是当我在GetDocuments中遇到断点时,“搜索”为空。

2 个答案:

答案 0 :(得分:1)

在这种情况下,我认为使用GET是一种更优雅的方式,那么您应该将代码更改为

var ajaxData = $("#textSearchBox").val();
url: "@Url.Action("GetDocuments", "DocumentSearchApi")"?search=ajaxData 

并删除数据:ajaxData

因为您想从搜索中获得一些东西。当您要修改API中的数据时,使用帖子

答案 1 :(得分:0)

将数据发送到Web服务器时,您需要使用JSON.stringify(),数据必须是字符串而不是对象

$.ajax({
    type: 'POST',
    url: "@Url.Action("GetDocuments", "DocumentSearchApi")",
    data: JSON.stringify(ajaxData),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    error: function (e) {
        //Error Function
    },
    success: function (jsonData) {
        //Success Function
    },
    fail: function (data) {
        //Fail Function
    }
});