JsonpMediaTypeFormatter.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Net.Http.Formatting; using System.IO; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; using System.Net; namespace BitAuto.PeopleLib.Api.Formatters { public class JsonpMediaTypeFormatter : JsonMediaTypeFormatter { private string callbackQueryParameter; public JsonpMediaTypeFormatter() { SupportedMediaTypes.Add(DefaultMediaType); SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/javascript")); MediaTypeMappings.Add(new UriPathExtensionMapping("jsonp",DefaultMediaType)); } public string CallbackQueryParameter { get { return callbackQueryParameter ?? "callback"; } set { callbackQueryParameter = value; } } public override Task WritetoStreamAsync(Type type,object value,Stream stream,HttpContent content,TransportContext transportContext) { string callback; if (IsJsonpRequest(out callback)) { return Task.Factory.StartNew(()=>{ var writer = new StreamWriter(stream); writer.Write(callback + "("); writer.Flush(); base.WritetoStreamAsync(type,value,stream,content,transportContext).Wait(); writer.Write(")"); writer.Flush(); }); } else { return base.WritetoStreamAsync(type,transportContext); } } private bool IsJsonpRequest(out string callback) { callback = null; if (HttpContext.Current.Request.HttpMethod != "GET") return false; callback = HttpContext.Current.Request.QueryString[CallbackQueryParameter]; return !string.IsNullOrEmpty(callback); } } }
Global.asax
var config = GlobalConfiguration.Configuration; config.Formatters.Insert(0,new JsonpMediaTypeFormatter());
前台访问
function getAll() { $.ajax({ url: "http://localhost:37980/api/people/List",type: 'GET',dataType: "jsonp",success: function (data) { var s = ""; $.each(data,function (i,val) { s += val.Name; }); $("#modes").html(s); } }).fail( function (xhr,textStatus,err) { alert('Error: ' + err); }); }
dataType:用jsonp
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。