原生javascript封装ajax和jsonp
在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
//ajax 和jsonp 跨域的封装
var $={
//封装ajax,堪比jquery中的ajax
ajax:function(option){
//判断输出的async真假
var async=typeof(option.async)==="undefined"?true:option.async;
var xhr=null;
//判断在各浏览器的请求
if(window.XMLHttpRequest){
// 主流浏览器
xhr=new XMLHttpRequest();
}else if(window.ActiveXObject){
// IE浏览器
xhr=new ActiveXObject("Microsoft.XMLHttp");
}
//打开
xhr.open(option.type || "get",option.url,async);
xhr.onreadystatechange=function(){
// 请求成功执行的
if(this.readyState==4 && this.status==200){
var data=this.responseText;
if(option.dataType=="json"){
// data=JSON.parse(data);
data=eval("("+data+")");
}
option.success && option.success(data);
}
};
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//发送
xhr.send();
},
loadScript:function(url){
//创建一个script标签
var script=document.createElement("script");
script.src=url;
//插入到head标签中
document.getElementsByTagName('head')[0].appendChild(script);
},
jsonp:function(option){
//利用随机数给函数其一个函数名
var cbName="JSONCallback"+Math.random().toString().substr(2,10);
//将url中的callback=?替换成callback=生成的函数名
option.url=option.url.replace(/callback=\?/,'callback='+cbName);
//创建一个用cbName作为函数名的函数
window[cbName]=function(data){
option.success && option.success(data);
window[cbName]=null; //window清空 ,避免污染全局变量
}
//调用loadScript方法,生成script的标签,设置src;
this.loadScript(option.url);
}
}
$.ajax({
url:"json.php",
type:"post",
async:false,
dataType:"json",
success:function(data){
console.log(data)
},
error:function(){ }
}) $.jsonp({
url:"http://www.bjuga.com/demo.php?callback=?",//后台给得接口
success:function(data){
console.log(data)
}
})
</script>
</body>
</html>
原生javascript封装ajax和jsonp的更多相关文章
- 原生JavaScript实现AJAX、JSONP
相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的 ...
- 原生JavaScript 封装ajax
原生JavaScript 封装ajax function myajax(options){ //新建一个局部对象 用来存放用户输入的各种参数 var opt={ type:options.type ...
- 原生 JavaScript 实现 AJAX、JSONP
相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的 ...
- 原生JavaScript封装Ajax
第一次开个人技术博客了,发的第一篇技术文章,欢迎指点…… 欢迎访问本人的独立博客:蓝克比尔 Ajax的实现主要分为四部分: 1.创建Ajax对象 // 创建ajax对象 var xhr = null; ...
- 原生JavaScript封装的jsonp跨域请求
原生JavaScript封装的jsonp跨域请求 <!DOCTYPE html> <html lang="en"> <head> <met ...
- 用原生JS实现AJAX和JSONP
前端开发在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的.其实,原生 ...
- 原生JavaScript写AJAX
前端JavaScript: function ajaxGet(url, obj) { var request; if(window.XMLHttpRequest) { request = new XM ...
- 原生javaScript完成Ajax请求
使用原生javaScript完成Ajax请求,首先应该创建一个对象XMLHttprequest,考虑到兼容低版本IE浏览器,使用ActiveXObject对象,代码入下: var request; i ...
- 原生JS封装Ajax插件(同域&&jsonp跨域)
抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...
随机推荐
- hdu 4731 2013成都赛区网络赛 找规律
题意:找字串中最长回文串的最小值的串 m=2的时候暴力打表找规律,打表可以用二进制枚举
- windows下自动关机
定时:at 00:00 shutdown -s //在00:00时关机 倒计时:shutdown -s -t 3600 //3600s后关机 取消:shutdown -a
- UVA 11475 后缀数组/KMP
题目链接: 题意:给定一个只含字母的字符串,求在字符串末尾添加尽量少的字符使得字符串为回文串. 思路:因为只能从末尾添加字符,所以其实求的是最长的后缀回文串.那么添加的字符为除了这个原串的最长后缀回文 ...
- John the Ripper
John the RipperJohn the Ripper(简称John)是一款著名的密码破解工具.它主要针对各种Hash加密的密文.它不同于Rainbow Table方式.它采用实时运算的方式和密 ...
- 20145223《Java程序程序设计》实验一实验报告
实验一 Java开发环境的熟悉(Windows + IDE) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用IDE 编辑.编译.运行.调试Java程序. 实验步骤 (一)命令行下Ja ...
- Ubantu下面命令听歌(豆瓣fm)
在Linux下一直是不太方便的事情,下面推荐一个方法: 终端中输入以下命令安装豆瓣fm: >> sudo pip install douban.fm >> sudo apt-g ...
- Static Resources In ASP.NET Core 1.0
静态资源包括HTML,CSS,图片和Js文件.在ASP.NET Core 1.0中,静态资源默认的所在目录是wwwroot,wwwroot可以在project.json中定义. Steps: 在www ...
- 每天一个Linux命令---tcpdump
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头” ...
- Path形状获取字符串型变量数据
Path形状获取字符串型变量数据: var path = new Path(); path.Data = Geometry.Parse("M 100,200 C 100,25 400,350 ...
- WPF文字排列方式解析zz
WPF文字的处理是一个比较基础的技能.在使用WPF开发工具时,对于各种文字的处理时经常会遇到的情况.希望大家可以通过实践经验的积累,牢固掌握这一方面知识. AD:WOT2014:用户标签系统与用户 ...