Javascript 如何从jsfetch()向服务器获取数据?
我尝试将数据从js传输到服务器,但得到“null” 我的js:Javascript 如何从jsfetch()向服务器获取数据?,javascript,c#,asp.net,asp.net-mvc,Javascript,C#,Asp.net,Asp.net Mvc,我尝试将数据从js传输到服务器,但得到“null” 我的js: async function sort(param) { let classList = param.classList; //"DateCreate" //Ascending console.log(param.id + " " + classList[0]); let response = await fetch("/Amendment
async function sort(param) {
let classList = param.classList;
//"DateCreate" //Ascending
console.log(param.id + " " + classList[0]);
let response = await fetch("/Amendment/Sort", {
method: "POST",
body: JSON.stringify({ sortValue : param.id, sortType : classList[0]})
});
if (response.ok) {
let responseHtml = await response.text();
document.getElementsByClassName("result").innerHTML = responseHtml;
alert("OK");
} else {
alert("Error HTTP: " + response.status);
}
在浏览器中:
服务器的方法(控制器:修改):
解决方案1: 您需要使用
[FromBody]
属性,因为请求正文包含sortValue
和sortType
还可以使用sortValue
和sortType
字符串属性创建一个类,并在控制器操作方法中使用该类作为参数
解决方案2:
而不是将sortValue
和sortType
放在正文中,而是从url发送
var url = "/Amendment/Sort?sortValue=" + param.id + "&sortType=" + classList[0];
let response = await fetch(url, {
method: "POST"
});
问题在于框架将您发布的值绑定到此操作方法的参数的方式。如果您定义一个类似以下的类:
public class SortModel
{
public string SortValue { get; set; }
public string SortType { get; set; }
}
然后将该类用作操作方法的唯一参数,则框架将正确绑定发布的值:
[HttpPost]
public IActionResult Sort(SortModel sortModel)
{
// Then use
// - sortModel.SortValue
// - sortModel.SortType
}
有关进一步的选项,您可以阅读。是否显示
响应。ok
是否为null
?@RhaidzsalAli我收到一条错误消息,因为我在服务器上的方法无法工作,因为它有输入参数-null我认为问题在于方法排序有多个参数。请检查这一点,特别是将多个参数传递给Web API控制器。我可以假设您拥有的控制器是ASP.NET MVC控制器,但这不是问题,您将阅读这篇文章,对于这种类型的控制器也是如此。@Christos我想这就是我要找的。谢谢。@Бццццццц非常欢迎您。
[HttpPost]
public IActionResult Sort(SortModel sortModel)
{
// Then use
// - sortModel.SortValue
// - sortModel.SortType
}