.Net Core Ajax Jquery向控制器传递空值,Vs2022, .Net 6



我尝试了不同形式的调用,相同的名称,使用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() },
....

相关内容

  • 没有找到相关文章

最新更新