我正在构建一个程序,用于在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中遇到断点时,“搜索”为空。
答案 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
}
});