標籤:
利用jsonp進行跨域請求資源
C# MVC ApiControllers準備如下:
1、需要在引用處右鍵管理NuGet安裝jsonp外掛程式
2、在Application_Start()中配置
GlobalConfiguration.Configuration.Formatters.Insert(0, new JsonpMediaTypeFormatter(new JsonMediaTypeFormatter()));
3、在ApiControllers中寫服務端介面代碼
[HttpGet] public void H5PlusTextJsAjax( string callback = "") { HttpContext.Current.Response.ContentType = "application/json"; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; List<ReturnJosn> callbackjson = new List<ReturnJosn>(); callbackjson.Add( new ReturnJosn() { name = "fhjson" }); HttpContext.Current.Response. Write(HttpContext.Current.Request.Params["callbackparam"].ToString() + "(" + new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(callbackjson) + ")"); HttpContext.Current.Response.End(); //return HttpContext.Current.Request.Params["callbackparam"].ToString() + // "(" + new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(callbackjson) + ")"; }
4、在其他頁面寫前台代碼
$.ajax({ type : "get", async:false, url : "http://localhost:11462/api/RePass", dataType : "jsonp", data:"{}", jsonp: "callbackparam",//服務端用於接收callback調用的function名的參數 success : function(json){ alert(json[0].name); }, error:function(httpstatesss,b11,c111){ alert(‘fail‘); }});
測試成功。需要注意apicontrollers中寫入返迴流文本的json字串一定要包含jq callback的隨機名字JQuerxxxxxx(你的json字串)。不然你的請求success但是會進入error裡面。jq解析json不成功會拋出parseerror。"jQuery191002365952031686902_1436757310853 was not called"
C# MVC jsonp初接觸成功