用最简单的例子演示如何使用js或者$.ajax进行跨域请求
2016-12-29 15:19
881 查看
js跨域请求的原理:先在script里声明一个callbackHandler函数,往header里添加一个script标签,script的src属性值为远端的请求地址,并传入刚才声明的函数名称(如:callbackHandler), 远端服务器收到请求后,返回结果拼装的格式为 callbackHandler({“name”:”zhangsan”}),实际上就是一段javascript代码,调用刚才注册的函数。
下面是一个很简单的例子
下面的发出跨域请求页面的完整代码,里面有详细的注释
下面是一个很简单的例子
//远端的服务器里的代码 public class HomeController : Controller { /// <summary> /// 处理请求的action,不管是asp、php、asp.net、jsp....实现类似的功能就行 /// 本例中访问的完成路径将是 http://xxx.xxx.xxx.xxx:port/home/getdata /// </summary> /// <param name="callback">客户端传来的js里的function名称</param> /// <returns></returns> public string GetData(string callback) { return callback + "({\"name\": \"sd\"})"; } //这个action只作为显示页面用,在跨域请求中没有用 public ActionResult Index() { return View(); } }
下面的发出跨域请求页面的完整代码,里面有详细的注释
//可以直接是一个静态的html页面 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width" /> <title></title> <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script> </head> <body> <a href="javascript:;" class="js">纯js调用</a> <a href="javascript:;" class="ajax">ajax调用</a> <script> //用于纯js跨域请求的回调函数 var callbackHandler = function (json) { alert('采用纯js跨域请求,返回的结果' + json.name); }; $(function () { //纯js跨域请求的处理代码 $(".js").on('click', function () { // 远端服务器的url地址(不管是什么类型的地址,比如:asp、php、asp.net、jsp等,最终生成的返回值都是一段javascript代码) var url = "http://localhost:15493/home/getdata?callback=callbackHandler"; //这里的localhost:15493根据实际情况进行修改 // 创建script标签,设置src属性 var script = document.createElement('script'); script.setAttribute('src', url); // 把script标签加入head document.getElementsByTagName('head')[0].appendChild(script); //本例中 服务器返回的结果为 callbackHandler({"name": "sd"});实际上就是调用本js里的callbackHandler函数 //本方法每执行一次,head就会新添加一次 script,使用$.ajax的方法则不会 }); //使用jquery的jsonp进行跨域请求的代码 $(".ajax").on('click', function () { $.ajax({ type: "get", async: false, url: "http://localhost:15493/home/getdata",//这里的localhost:15493根据实际情况进行修改 data: {}, dataType: "jsonp", jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名 //jsonpCallback: "getName",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 success: function (json) { alert('采用纯jQuery的jsonp进行跨域请求,返回的结果' + json.name); }, error: function () { alert('fail'); } }); }); }); </script> </body> </html>
相关文章推荐
- 使用JavaScript(JS)进行Ajax异步请求
- 上传文件,使用FormData进行Ajax请求,jsoncallback跨域
- 简单例子演示如何进行类的热加载(Hot Deployment)
- 使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
- 简单的使用mock.js模拟数据,拦截ajax请求
- AJAX XML 实例 下面的例子将演示网页如何使用 AJAX 来读取来自 XML 文件的信息:
- 跨域解决方案 & 使用angularJS和jQuery进行Ajax请求的差异
- Ajax如何进行跨域请求?Ajax跨域请求的原理
- 一个简单的 ASP.NET MVC 例子演示如何在 Knockout JS 的配合下,使用 TypeScript 。
- 用最简的代码和例子演示如何使用jQuery进行单元格合并
- 使用bootstrap-paginator.js 分页来进行ajax 异步分页请求
- 跨域解决方案 & 使用angularJS和jQuery进行Ajax请求的差异
- ajax 小例子 示例 简单应用 如何使用
- 将微博或者qq空间的说说同步至博客园 wcf+js(ajax)跨域请求(1)
- asp.net中使用ajax简单例子
- 使用js脚本如何进行客户端验证时出现乱码怎么办?
- PHP简单演示如何使用模板制作静态页面
- 一是最简单的例子让你学会如何使用XML来做一个页面
- 如何使用Javascript(简称JS)取得LI里的内容(简单易懂的代码实例)
- js里ajax简单例子