从 AJAX 调用 return IHttpActionResult 的 GET 方法?
Calling GET method that return IHttpActionResult from AJAX?
AJAX 与 returns IQueryable
的 GetAll
方法一起工作正常,但与 GetOne
一起工作,它不起作用 [=38] =] "undefined" 到浏览器,
这是 ApiController
class:
中的 Get 方法
[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 函数:
$.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
returns IHttpActionResult
吗?
获取作者:
public IQueryable<Author> GetAuthors()
{
return db.Authors;
}
控制台截图window:
Is this because GetAuthor
returns 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>')
});
}
});
}
根据聊天讨论,我们确认答案是 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>');
}
AJAX 与 returns IQueryable
的 GetAll
方法一起工作正常,但与 GetOne
一起工作,它不起作用 [=38] =] "undefined" 到浏览器,
这是 ApiController
class:
[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 函数:
$.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
returns IHttpActionResult
吗?
获取作者:
public IQueryable<Author> GetAuthors()
{
return db.Authors;
}
控制台截图window:
Is this because
GetAuthor
returnsIHttpActionResult
不! 问题在于您如何处理请求返回的响应。
示例操作返回单个作者,但在客户端被视为集合。
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>')
});
}
});
}
根据聊天讨论,我们确认答案是 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>');
}