AJAX与返回GetAll
的{{1}}方法一起使用,但是IQueryable
,它不起作用并将“未定义”返回给浏览器,
这是GetOne
类中的Get方法:
ApiController
这是AJAX功能:
[ResponseType(typeof(Author))]
public IHttpActionResult GetAuthor(int id)
{
Author author = db.Authors.Find(id);
if (author == null)
{
return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, $"Author with {id} not found."));
}
return ResponseMessage(Request.CreateResponse(HttpStatusCode.OK, author));
}
这是因为$.ajax({
type: 'GET',
url: 'api/Authors',
dataType: 'json',
data:{id:'1'},
success: function (data) {
list.empty();
$.each(data, function (index, val) {
var qualifier = val.AuthorId + ' - ' + val.Name;
list.append('<li>'+qualifier+'</li>')
});
}
});
会返回GetAuthor
吗?
GetAuthors:
IHttpActionResult
控制台窗口的屏幕截图:
答案 0 :(得分:3)
这是因为
GetAuthor
返回IHttpActionResult
否<!/强> 问题是您如何处理请求返回的响应。
示例操作返回的是单个作者,但却被视为客户端上的集合。
function GetData(id) {
var url = 'api/Authors';
if(id) url = url + '?id=' + id;
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function (data) {
list.empty();
if (!jQuery.isArray(data)) data = [data]; // If a single object is returned, wrap it in an array
$.each(data, function (index, val) {
var qualifier = val.AuthorId + ' - ' + val.Name;
list.append('<li>'+qualifier+'</li>')
});
}
});
}
答案 1 :(得分:1)
正如聊天所讨论的那样,我们确认答案是success
。
然而,data
值不是数组,并且返回的内容相当于:
{
AuthorId: 1,
Book: null,
Name: "Name here"
}
因此success
的以下jQuery代码有效:
success: function(data){
var qualifier = data.AuthorId + ' - ' + data.Name;
list.append('<li>'+qualifier+'</li>');
}