使用jQuery.getJson获取Web API

我是ASP.NET Web API的初学者。
无法使用jQuery.getJson()来获取ASP.NET Web API

这失败了:

 //in "file:///C:/Users/lil/Desktop/index.html" var url = "http://localhost:56110/api/Values"; $.getJSON(url, function (data) { $("#locMsg").text("success"+data); });` 

这成功了:

 //in "http://localhost:56110/index.html" var url = "http://localhost:56110/api/Values"; $.getJSON(url, function (data) { $("#locMsg").text("success"+data); }); 

我虽然是因为跨域请求,但这成功了:

 //in "file:///C:/Users/lil/Desktop/index.html" var url = "http://api.flickr.com/services/feeds/photos_public.gne?tags=dog&tagmode=any&format=json&jsoncallback=?"; $.getJSON(url, function (data) { $("#locMsg").text("success"); }); 

然后我试着添加“jsoncallback =?” 但也失败了:

 //in "file:///C:/Users/lil/Desktop/index.html" var url = "http://localhost:56110/api/Values?jsoncallback=?"; $.getJSON(url, function (data) { $("#locMsg").text("success"+data); }); 

ValuesController:

 namespace WebApplication1.Controllers{ public class ValuesController : ApiController { // GET api/values public IEnumerable Get() { return new string[] { "value1", "value2" }; }` `// GET api/values/5 public string Get(int id) { return "value"; } // POST api/values public void Post([FromBody]string value) { } // PUT api/values/5 public void Put(int id, [FromBody]string value) { } // DELETE api/values/5 public void Delete(int id) { } } 

}}

您需要在WebAPI中启用CORS。 首先,安装此Nuget – https://www.nuget.org/packages/Microsoft.AspNet.WebApi.Cors ,然后将此行添加到WebApiConfig:

 config.EnableCors(new EnableCorsAttribute("*","*","*")); 

WebApiConfig:

 public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.EnableCors(new EnableCorsAttribute("*","*","*")); // Web API configuration and services // Configure Web API to use only bearer token authentication. config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); }