AJAX прекрасно работает с GetAll
метода, который возвращает IQueryable
, но с GetOne
, он не работает, и вернуть «неопределенными» в браузере, здесь метод Get в ApiController
классе:Вызов метода GET, возвращающего IHttpActionResult из 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:
$.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
возвращается IHttpActionResult
?
GetAuthors:
public IQueryable<Author> GetAuthors()
{
return db.Authors;
}
Скриншот из окна консоли:
Чтобы проверить, является ли ответ действительный формат JSON (это то, что ожидает Ajax здесь), вы можете добавить после успеха эту функцию 'complete: function (data) {console.log (data)}' и проверить вывод. Это может быть проблемой с async или с возвращенным форматом JSON. –
И можем ли мы увидеть код для GetAll? –
Я добавил код, проверьте его!] –