jQuery GET 参数在服务器端始终为空
jQuery GET with parameters always null on server side
我不知道我错过了什么。
传递复杂的自定义对象时一切正常,但当我尝试传递简单的 int 或字符串时,我得到 null
这是客户端的 ajax 调用:
var id = 1;
$.ajax({
type: "GET",
url: "/api/APICalls/MethodName",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(id), // or JSON.stringify({id: id}) or just id
dataType: "json",
success: function (data) {
console.log(data);
},
error: function (data) {
alert(data.responseText);
}
});
服务器端方法如下:
[HttpGet]
public void MethodName([FromBody] string id)
{
// Do something with id... Doesn't matter... It is `null`!
}
id
参数得到 null
值的原因是 [FromBody]
。从技术上讲,当您使用 jQuery
向服务器发送 GET
请求时,数据显示在查询参数中而不是请求正文中。
你需要在后端做的只是删除 [FromBody]
如下:
[HttpGet]
public void MethodName(string id)
{
// Now you should be able to access the value of id
}
从客户端发送数据如下:
var id = 1;
$.ajax({
url: '/api/APICalls/MethodName',
type: 'GET',
data: {id: id},
success: function (data) {
console.log(data);
},
error: function (err) {
console.error(err);
}
});
从 [FormBody]
的文档中,您可以阅读以下内容:
To force Web API to read a simple type from the request body, add the [FromBody]
attribute to the parameter.
您的数据显示在查询字符串中,请检查 Chrome 中的网络选项卡:
希望对您有所帮助!
我不知道我错过了什么。
传递复杂的自定义对象时一切正常,但当我尝试传递简单的 int 或字符串时,我得到 null
这是客户端的 ajax 调用:
var id = 1;
$.ajax({
type: "GET",
url: "/api/APICalls/MethodName",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(id), // or JSON.stringify({id: id}) or just id
dataType: "json",
success: function (data) {
console.log(data);
},
error: function (data) {
alert(data.responseText);
}
});
服务器端方法如下:
[HttpGet]
public void MethodName([FromBody] string id)
{
// Do something with id... Doesn't matter... It is `null`!
}
id
参数得到 null
值的原因是 [FromBody]
。从技术上讲,当您使用 jQuery
向服务器发送 GET
请求时,数据显示在查询参数中而不是请求正文中。
你需要在后端做的只是删除 [FromBody]
如下:
[HttpGet]
public void MethodName(string id)
{
// Now you should be able to access the value of id
}
从客户端发送数据如下:
var id = 1;
$.ajax({
url: '/api/APICalls/MethodName',
type: 'GET',
data: {id: id},
success: function (data) {
console.log(data);
},
error: function (err) {
console.error(err);
}
});
从 [FormBody]
的文档中,您可以阅读以下内容:
To force Web API to read a simple type from the request body, add the
[FromBody]
attribute to the parameter.
您的数据显示在查询字符串中,请检查 Chrome 中的网络选项卡:
希望对您有所帮助!