本文实例讲述了javascript跨域请求包装函数与用法。分享给大家供大家参考,具体如下:
一、源码
// 定义AJAX跨域请求的JSON (function(){ if(typeof window.$JSON== 'undefined'){ window.$JSON= {}; }; $JSON._ajax = function(config){ config = config[0] || {}; this.url = config.url || ''; this.type = config.type || 'xhr'; this.method = (this.type == 'json') ? 'GET' : config.method.toUpperCase() || 'GET'; this.param = config.param || null; this.callback = config.callback || {}; this.XHR = null; if(typeof window._$JSON_callback == 'undefined'){ window._$JSON_callback = {}; } this._createRequest(); }; $JSON._ajax.prototype = { // 缓存XHR请求,再次再调用时不再进行判断 _createXHR : function(){ var methods = [ function(){ return new XMLHttpRequest(); }, function(){ return new ActiveXObject('Msxml2.XMLHTTP'); }, function(){ return new ActiveXObject('Microsoft.XMLHTTP'); } ]; for(var i = 0, l = methods.length; i < l; i++){ try{ methods[i](); }catch(e){ continue; } this._createXHR = methods[i]; return methods[i](); } }, // 建立XHR请求 _createRequest : function(){ return (this.type == 'json') ? this._setJSONRequest() : this._setXHRRequest(); }, _setXHRRequest : function(){ var _this = this; var param = ''; for(var i in this.param){ if(param == ''){ param = i+'='+this.param[i]; }else{ param+= '&'+i+'='+this.param[i]; } } this.XHR = this._createXHR(); this.XHR.onreadystatechange = function(){ if(_this.XHR.readyState == 4 && _this.XHR.status == 200){ _this.callback.success(_this.XHR.responseText); }else{ _this.callback.failure('重新操作'); } }; this.XHR.open(this.method, this.url, true); this.XHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8"); this.XHR.send(param); }, // 建立JSON请求 _setJSONRequest : function(){ var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); var fun = this._setRandomFun(); var _this = this; var param = ''; for(var i in this.param){ if(param == ''){ param = i+'='+this.param[i]; }else{ param+= '&'+i+'='+this.param[i]; } } script.type = 'text/javascript'; script.charset = 'utf-8'; if(head){ head.appendChild(script); }else{ document.body.appendChild(script); } // data:为回调函数所需要传入的参数 // 定义页面中的回调函数,如例子中的"jsonpCallback()"方法 window._$JSON_callback[fun.id] = function(data){ _this.callback.success(data); setTimeout(function(){ delete window._$JSON_callback[fun.id]; script.parentNode.removeChild(script); }, 100); }; script.src = this.url+'?callback='+fun.name+'&'+param; }, // 生成随机JSON回调函数 _setRandomFun : function(){ var id = ''; do{ id = '$JSON'+Math.floor(Math.random()*10000); }while(window._$JSON_callback[id]) return{ id : id, name : 'window._$JSON_callback.'+id } } }; window.$JSON.ajax = function(){ return new $JSON._ajax(arguments); } })();
二、调用方式
//调用方式 var ajax = new $JSON.ajax({ url : 'http://www.sina.com/api', type : 'json', method : 'get', param: { bar: true }, callback : { success : function(data){ console.log( '55668',data); }, failure : function(error){ alert(errow); } } });
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript中ajax操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
本文向大家介绍Django跨域请求CSRF的方法示例,包括了Django跨域请求CSRF的方法示例的使用技巧和注意事项,需要的朋友参考一下 web跨域请求 1.为什么要有跨域限制 举个例子: 1.用户登录了自己的银行页面 http://mybank.com,http://mybank.com向用户的cookie中添加用户标识。 2.用户浏览了恶意页面 http://evil.com。执行了页面中的
在浏览器的沙箱环境下,默认只允许js代码请求其所属域的数据,不同域名/ip/协议,都默认禁止. 跨域所需要的是,是响应浏览器发起的OPTIONS,及真正的GET/POST, 共2个请求哦. 所需要的逻辑CrossOriginFilter已经封装好了 如何解决 nutz给出的方案非常简单,仅需要在入口方法上添加CrossOriginFilter即可 @Filters(@By(type=CrossO
跨域请求 如果某个路由或者分组需要支持跨域请求,可以使用 Route::get('new/:id', 'News/read') ->ext('html') ->allowCrossDomain(); 跨域请求一般会发送一条OPTIONS的请求,一旦设置了跨域请求的话,不需要自己定义OPTIONS请求的路由,系统会自动加上。 跨域请求系统会默认带上一些Header,包括: Acces
问题内容: 题: 我正在尝试使用JSON跨域,但是我发现的只是JSON解析器,我不需要… 我已经读到可以使用JSON进行跨域请求,但是到目前为止,我所看到的是使用XMLHttpRequest的实现…- 这意味着您不能使用跨域请求,至少不能在IE 8之外使用… 我去过http://www.json.org/,但是我发现了所有这些是解析器还是没用。 到目前为止,我在google上发现的最好的是 htt
跨域指的是JavaScript通过XMLHttpRequest请求数据时,调用JavaScript的页面所在的域和被请求页面的域不一致。对于网站来说,浏览器出于安全考虑是不允许跨域。另外,对于域相同,但端口或协议不同时,浏览器也是禁止的。下表给出了进一步的说明: URL 说明 是否允许请求 http://a.example.com/ http://a.example.com/a.txt 同域下 允
问题内容: 我正在使用PhoneGap和JavaScript来生成iPhone应用程序。是否可以发送跨域AJAX(POST)请求并将响应下载为HTML?(例如:登录yahoo邮件并提取新邮件) 问题答案: Cordova / PhoneGap允许将域列入白名单。只要您请求的服务器在白名单中即可。