我尝试了不同形式的调用,相同的名称,使用stringify,不使用stringify....
我html
<input type="text" id="txtName"/>
<input type="button" id="btnGet" value="Get Current Time"/>
<input type="text" id="txtresponse"/>
我的jscript
$(function () {
$("#btnGet").click(function () {
$.ajax({
type: "POST",
url: "/Home/AjaxMethod",
data: '{name: "' + $("#txtName").val() + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
//alert(response);
$("#txtresponse").val(response);
},
failure: function (response) {
alert(response.responseText);
},
error: function (response) {
//alert(response.responseText);
}
});
});
});
我的控制器
[HttpPost]
public ContentResult AjaxMethod(string name)
{
string currentDateTime = string.Format("Hello {0}.nCurrent DateTime: {1}",
name, DateTime.Now.ToString());
return Content(currentDateTime);
}
这里,AjaxMethod"控制器总是接收null作为"name"的值。参数。
我的版本是。net 2022和。net 6
非常感谢您的帮助
. NET 6 MVC默认接收application/x-www-form-urlencoded
类型数据,如果你不指定(例如使用[FromBody]
/[FromQuery]
)源
修改代码如下:
$(function () {
$("#btnGet").click(function () {
$.ajax({
type: "POST",
url: "/Home/AjaxMethod",
data: { name: $("#txtName").val() }, //change here....
//contentType: "application/json; charset=utf-8", //remove it
// default is application/x-www-form-urlencoded
dataType: "json",
success: function (response) {
//alert(response);
$("#txtresponse").val(response);
},
failure: function (response) {
alert(response.responseText);
},
error: function (response) {
//alert(response.responseText);
}
});
});
});
您不需要连接字符串来使用AJAX向控制器发送数据。你可以简单地给它一个javascript对象来发送。试试以下命令:
$(function () {
$("#btnGet").click(function () {
$.ajax({
type: "POST",
url: "/Home/AjaxMethod",
data: {
name: $("#txtName").val()
},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
//alert(response);
$("#txtresponse").val(response);
},
failure: function (response) {
alert(response.responseText);
},
error: function (response) {
//alert(response.responseText);
}
});
});
});
您可以创建模型类
public class NameModel
{
public string Name {get; set;}
}
修复ajax数据
data: JSON.stringify({ name:$("#txtName").val() }),
并将frombody属性添加到动作
public ContentResult AjaxMethod([FromBody]NameModel model)
{
var name=model.Name;
... another your code
}
或保持动作不变,但删除"application/json;charset = utf-8"contentType from ajax
$.ajax({
type: "POST",
url: "/Home/AjaxMethod",
data: {name: $("#txtName").val() },
....