原生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插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...
随机推荐
- Java Data Type
官方文档:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html 转载地址:http://blog.csdn.n ...
- opacity
.css{filter:alpha(opacity:30);/*filter是给IE用到*/opacity:.3; }
- C#部分的总结
经过本次考试暴露出一些问题,面对一些概念性和文字性的基础知识,仍然不够细心,出现各种不应该的错误, 虽然平时学习中,实际操作写代码比较顺利,但基础知识和概念仍不可少,这在将来面试上也是重要的一部分.在 ...
- JavaScript设计模式——前奏(封装和信息隐藏)
前面一篇讲了js设计模式的前奏,包括接口的讲解.. 三:封装和信息隐藏: 信息隐藏用来进行解耦,定义一些私有的数据和方法. 封装是用来实现信息隐藏的技术,通过闭包实现私有数据的定义和使用. 接口在这其 ...
- C#函数与SQL储存过程
一点点小认识作为memo,求指正. C#的函数与SQL的储存过程有很多的相似性, 它们都是一段封闭的代码块,来提高代码的重用性,虽然现在复制粘贴很方便,但是我们在写多个函数的时候频繁的复制粘贴相同的内 ...
- Chrome DevTools的15个使用技巧【转载】
1.快速文件转换 2.在源代码中搜索 3.跳到特定行 4.在控制台中选择元素 5.使用多个光标和选择 6.保存日志 7.格式化打印{} 8.设备模式 9.设备仿真传感器 10.颜色选择器 11.强制元 ...
- PHP 使用 OSS 批量上传图片
<?php set_time_limit(0); // 引入自动加载类// 确保路径是否正确 require_once 'autoload.php'; // 确定参数 需要申请 $accessK ...
- 使用Gson排除特定字段
http://blog.csdn.net/hknock/article/details/51037564
- ural 1075. Thread in a Space
1075. Thread in a Space Time limit: 1.0 secondMemory limit: 64 MB There are three points in a 3-dime ...
- 【原】iOS学习之KVC原理
1. KVC的实现原理 遍历字典里面所有的key,以name为例 去模型中查找有没有setName:方法,有就直接调用赋值 假如没有找到setName:方法,就会继续查找有没有_name属性,有就_n ...