ASP.NET MVC 实现跨域请求的两种形式
生活随笔
收集整理的這篇文章主要介紹了
ASP.NET MVC 实现跨域请求的两种形式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、使用jsonp請求
1 $.ajax({ 2 type: "GET", 3 url: "http://10.174.1.1/Home/Test?callback=?", 4 data: { id: "1" }, 5 dataType: "jsonp", 6 jsonp: "callback", 7 success: function (data) { 8 alert(data); 9 }, 10 error: function (XMLHttpRequest, textStatus, errorThrown) { 11 alert(errorThrown); 12 } 13 }); 1 //Jsonp跨域訪問 2 [HttpGet] 3 public ActionResult Test() 4 { 5 string vid = Request.QueryString["id"]; 6 string callback = Request["callback"]; 7 return new JsonpResult<object>(Member.FirstOrDefault(u => u.id == id).Name, callback); 8 } 9 10 11 public class JsonpResult<T> : ActionResult 12 { 13 public T Obj { get; set; } 14 public string CallbackName { get; set; } 15 16 public JsonpResult(T obj, string callback) 17 { 18 this.Obj = obj; 19 this.CallbackName = callback; 20 } 21 22 public override void ExecuteResult(ControllerContext context) 23 { 24 var js = new System.Web.Script.Serialization.JavaScriptSerializer(); 25 var jsonp = this.CallbackName + "(" + js.Serialize(this.Obj) + ")"; 26 27 context.HttpContext.Response.ContentType = "application/json"; 28 context.HttpContext.Response.Write(jsonp); 29 } 30 }二、跨域資源共享
相比 JSONP 請求,跨域資源共享要簡單許多,也是實現跨域 AJAX 請求的首選。不過在 IE9 還沒有對該技術的支持,FireFox 就已經支持了
1 $.ajax({ 2 type: "GET", 3 url: "http://10.174.1.1/Home/Test2", 4 data: { id: "1" }, 5 dataType: "json", 6 success: function (data) { 7 alert(data); 8 }, 9 error: function (XMLHttpRequest, textStatus, errorThrown) { 10 alert(errorThrown); 11 } 12 }); 1 //跨站資源共享實現跨站AJAX請求 2 public ActionResult Test2() 3 { 4 string vid = Request.QueryString["id"]; 5 HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "*"); 6 return Json(Member.FirstOrDefault(u => u.id == id).Name, JsonRequestBehavior.AllowGet);7 8 }?
轉載于:https://www.cnblogs.com/spqadd/p/4546265.html
總結
以上是生活随笔為你收集整理的ASP.NET MVC 实现跨域请求的两种形式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlserver 动态表名 动态字段名
- 下一篇: 场景管理