get方式:
称为jsonp,就是js的跨域通信方式,因为知道有些标签可以跨域获取内容,例如img,script,link...,jsonp就是把动态创建一个script标签,然后配置src属性,后台代码返回的时一个函数,称之回调函数,后台完成业务后,调用下面这个AjaxHandleCrossDomainFormat()来返回一个要回调函数,后台执行完成后并返回此js代码,然后调用js的success_jsonpCallback方法,因为ajax封装好了,所以直接在参数[jsonpCallback]处写这个方法的名称即可,至于ajax中jsonp这个参数就类似于url中的ID=1,在这里时callback=success_jsonpCallback(),这些名字可以随便改,实现跨域也可以用iframe之类的,也可以不用ajax,动态创建一个script标签,把网址赋进去,然后本地在写一个方法,后台返回值就是这个方法,他自己就会调用,
还有,了解到,jsonp作为一种数据传输方法,和ajax的意义是相冲突的,本身jsonp是不应该集成在ajax中的,跨域的简单笔记完成~
private string AjaxHandleCrossDomainFormat(string Json, string callbackparam = null) { if (callbackparam == null) { return "success_jsonpCallback([" + Json.Replace(@" ", "").Replace(""", "'").Replace(@"", "") + "])"; } else { return callbackparam + "([" + Json.Replace(" ", "").Replace(""", "'").Replace(@"", "") + "])"; } }
ajax:
$.ajax({ type: "post", url: "http://myesn.cn/remote.js", dataType: "jsonp", jsonp: "callback", jsonpCallback: "success_jsonpCallback", success: function (data) { console.trace(); console.log(data.result); }, error: function (msg) { console.log(msg.statusText); } });
Post方式:
添加IIS的mime类型,添加以下三个就可以了,改变Access-Control-Allow-Origin 就可以限制来访的网址
Access-Control-Allow-Headers:*
Access-Control-Allow-Methods:POST
Access-Control-Allow-Origin:*