我在Asp.Net Core中遇到问题,试图将Ajax调用中的数据传递到API Controller函数的参数中。
我正在Ajax调用中使用数据字段来传递“ id”的值。在API控制器中,应将此值分配给“ id”参数,但绝对不要。
// Ajax call
$.ajax({
url: "/api/apicomment/GetPostComments",
type: "GET",
data: { 'id' : 2 },
dataType: "json",
}).done(function (data) {
// Some function
}).fail(function (handleError) {
// Some function
});
API控制器是普通的脚手架API控制器,在其中我可以通过id参数获得特定的注释。但是,每次我打电话时,值都是0。
// API Controller
[HttpGet("{id}")]
[Route("GetPostComments")]
public async Task<ActionResult<IEnumerable<Comment>>> GetSpecificComment(int id)
{
var comment = await _context.Comment.Where(c => c.PostId == id).ToListAsync();
if (comment == null)
{
return NotFound();
}
return comment;
}
尝试了许多不同的方法,但是我不太清楚。
希望能提供任何反馈意见!
答案 0 :(得分:1)
没什么可尝试的
首先要了解您的API网址
url: "/api/GetPostComments"
那会干净得多
第二个数据应该是这样的
data: { id : 2 }
最后,您不能在这两个之间混淆
[HttpGet("{id}")]
[Route("GetPostComments")]
应该是这样
[Route("api/[controller]")]
[ApiController]
public class SomeController : ControllerBase {
[HttpGet("GetPostComments/{id}")]
public async Task<ActionResult<IEnumerable<Comment>>> GetSpecificComment(int id)
{
var comment = await _context.Comment.Where(c => c.PostId == id).ToListAsync();
if (comment == null)
{
return NotFound();
}
return comment;
}
}
因此您的网址应类似于此api / your-controller / GetPostComments / 1
您可以阅读更多here
答案 1 :(得分:1)
您还可以通过查询字符串进行传递:
注释echo "<script>window.close();</script>";
行:
echo "<script>close();</script>";
使用data
来获取参数:
// Ajax call
$.ajax({
url: "/api/apicomment/GetPostComments",
type: "GET",
data: { 'id' : 2 },
}).done(function (data) {
// Some function
}).fail(function (handleError) {
// Some function
});