Javascript getJSON函数,查询linq返回的列表;“未定义”;
我实际上是想了解一点ASP.NETWebAPI。我想查询ArtistController类中包含的艺术家列表 这是前端的屏幕截图 这是我的控制器Javascript getJSON函数,查询linq返回的列表;“未定义”;,javascript,c#,linq,asp.net-web-api,getjson,Javascript,C#,Linq,Asp.net Web Api,Getjson,我实际上是想了解一点ASP.NETWebAPI。我想查询ArtistController类中包含的艺术家列表 这是前端的屏幕截图 这是我的控制器 public class ArtistsController : ApiController { Artist[] artists = new Artist[] { new Artist { Name = "Metallica",Id ="65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab",Co
public class ArtistsController : ApiController
{
Artist[] artists = new Artist[]
{
new Artist { Name = "Metallica",Id ="65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab",Country ="US",Aliases ="Metalica" },
new Artist { Name = "Lady Gaga",Id ="650e7db6-b795-4eb5-a702-5ea2fc46c848",Country ="US",Aliases ="Lady Ga Ga,Stefani Joanne Angelina Germanotta" },
new Artist { Name = "Mumford & Sons",Id ="c44e9c22-ef82-4a77-9bcd-af6c958446d6",Country ="GB",Aliases ="" },
new Artist { Name = "Mott the Hoople",Id ="435f1441-0f43-479d-92db-a506449a686b",Country ="GB",Aliases ="Mott The Hoppie,Mott The Hopple" },
new Artist { Name = "Megadeth",Id ="a9044915-8be3-4c7e-b11f-9e2d2ea0a91e",Country ="US",Aliases ="Megadeath" },
new Artist { Name = "John Coltrane",Id ="b625448e-bf4a-41c3-a421-72ad46cdb831",Country ="US",Aliases ="John Coltraine,John William Coltrane" }
}
};
public IEnumerable<Artist> GetAllArtists()
{
return artists;
}
public IHttpActionResult GetArtist(string name)
{
//IEnumerable<Artist> ArtistQuery = (from Artist in artists
// where Artist.Name.Contains(name)
// select Artist).ToList();
IEnumerable<Artist> ArtistQuery = from Artist in artists
where Artist.Name.Contains(name)
select Artist;
if (ArtistQuery == null)
{
return NotFound();
}
return Ok(ArtistQuery);
}
}
下面是WEAPI配置
public static void Register(HttpConfiguration config) {
// Web API configuration and services // Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
我收到一个错误“未定义”“未定义”
后端没有编译错误
Chrome控制台中也没有javascript错误
谢谢你的帮助 您的
formatItem
的javascript需要一个项目Artist
function formatItem(item) { return item.Name + ' ' + item.Country; }
但是您的GetArtist
正在返回一个IEnumerable
,这将解释为什么您会看到undefined-undefined
要么从GetArtist
public IHttpActionResult GetArtist(string name) {
IEnumerable<Artist> ArtistQuery = from Artist in artists
where Artist.Name.Contains(name)
select Artist;
if (ArtistQuery.Count() == 0) {
return NotFound();
}
return Ok(ArtistQuery.First());
}
formatItem(数据)
有什么作用?有函数formatItem(item){return item.Name+''+item.Country;}如果您使用Fiddler调用API端点with Postman,它会将输出显示为“艺术家名称”“国家”,您从API返回了有效的结果吗?jquery.getJson可以工作并发送所有艺术家,如下所示:var uri='API/artists'$(document).ready(函数(){//发送AJAX请求$.getJSON(uri).done(函数(数据){//成功时,“数据”包含艺术家列表。$。每个(数据、函数(键、项){//为产品添加列表项。$(“GetAllArtists
。您是如何配置路由的。更新您的问题以显示apipublic静态无效寄存器(HttpConfiguration config){//Web API配置和服务//Web API routes config.mapHttpAttribute路由();config.routes.MapHttpRoute(名称:“DefaultApi”,routeTemplate:“api/{controller}/{id}”,默认值:new{id=RouteParameter.Optional};}您需要将此类信息添加到原始帖子中。你可以编辑它。我现在就添加它。
public IHttpActionResult GetArtist(string name) {
IEnumerable<Artist> ArtistQuery = from Artist in artists
where Artist.Name.Contains(name)
select Artist;
if (ArtistQuery.Count() == 0) {
return NotFound();
}
return Ok(ArtistQuery.First());
}
function find() {
$.getJSON(uri + '/' + name) //This should resolve to you web api endpoint `api/artists/getartist/{name}`
.done(function (data) {
if(data) {
$.each(data, function (key, item)) {
// Add a list item for the found artists to artist.
$('<li>', { text: formatItem(item) }).appendTo($('#artist'));
}
}
})
.fail(function (jqXHR,textStatus,err)
{
$('#artist').text('Error : ' + err);
});
}
[RoutePrefix("api/artists")]
public class ArtistsController : ApiController
{
Artist[] artists = new Artist[]
{
new Artist { Name = "Metallica",Id ="65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab",Country ="US",Aliases ="Metalica" },
new Artist { Name = "Lady Gaga",Id ="650e7db6-b795-4eb5-a702-5ea2fc46c848",Country ="US",Aliases ="Lady Ga Ga,Stefani Joanne Angelina Germanotta" },
new Artist { Name = "Mumford & Sons",Id ="c44e9c22-ef82-4a77-9bcd-af6c958446d6",Country ="GB",Aliases ="" },
new Artist { Name = "Mott the Hoople",Id ="435f1441-0f43-479d-92db-a506449a686b",Country ="GB",Aliases ="Mott The Hoppie,Mott The Hopple" },
new Artist { Name = "Megadeth",Id ="a9044915-8be3-4c7e-b11f-9e2d2ea0a91e",Country ="US",Aliases ="Megadeath" },
new Artist { Name = "John Coltrane",Id ="b625448e-bf4a-41c3-a421-72ad46cdb831",Country ="US",Aliases ="John Coltraine,John William Coltrane" }
}
};
// GET api/artists
[HttpGet]
[Route("")]
public IEnumerable<Artist> GetAllArtists()
{
return artists;
}
// GET api/artists/John
[HttpGet]
[Route("{name}")]
public IHttpActionResult GetArtist(string name)
{
IEnumerable<Artist> ArtistQuery = from Artist in artists
where Artist.Name.Contains(name)
select Artist;
if (ArtistQuery == null)
{
return NotFound();
}
return Ok(ArtistQuery);
}
}