我正在使用一个ASP.NET Core 3.0 MVC应用程序,其中我做了以下jQuery Ajax调用。
return $.ajax({
type: type,
url: '/' + controller + '/' + action,
data: jsonData,
timeout: timeout,
contentType: "application/json; charset=utf-8",
success: function (returnedData) {
successFunc(returnedData);
},
error: function (errMsg) {
errorFunc(errMsg);
}
});
将数据对象传递给它
{
input1: 'random',
input2: '1',
input3: '1',
},
但它总是传递空参数。
我也试过在启动时添加addnewtonsoftjson(),但似乎没有任何改变。
这里有一个类似的问题,并没有真正的答案。.Net Core 3.0 AJAX POST Body总是Null的问题。
我认为你的问题是相对于你使用的HTTP方法类型和你传递给后台的内容类型而言的。
我发现了一个关于contentType的伟大总结。此处
如果你不想钻研得太深,你可以把你的contentType改为 application/x-www-form-urlencoded; charset=UTF-8
应该可以解决你的问题
所以保持你问题中显示的c#代码。在你的js调用中。
var data = JSON.stringify({
'input1': ‘inputvalue’,
'input2':’inputvalue’,
‘input3’: ‘inputval’
});
$.ajax({
type: "POST",
url: same as you have in the question
data: data,
contentType: 'application/json',
success: function (returnedData) {
successFunc(returnedData);
},
error: function (errMsg) {
errorFunc(errMsg);
}
});
错误似乎来自于定义内容类型。
return $.ajax({
type: type,
url: '/' + controller + '/' + action,
data: jsonData,
success: function (returnedData) {
successFunc(returnedData);
},
error: function (errMsg) {
errorFunc(errMsg);
}
});
没有 内容类型 定义,并正确地传递到控制器中的动作。