原生JavaScript 封装ajax

 

function myajax(options){
//新建一个局部对象 用来存放用户输入的各种参数
var opt={
type:options.type||"get",//获取用户输入的传输方法,可选,不写为get
data:options.data||"",//获取用户输入的数据
dataType:options.dataType||"",//获取用户输入的数据类型比如json 或者xml
url:options.url||"",//用户输入的url
success:options.success||null//成功函数。
}

if(opt.url==""){//如果用户没有输入URL,这样是不允许的 。直接返回,不执行以后的操作
alert("url不能为空");
return;
}
if(options.type){
opt.type=options.type.toLowerCase();//将用户输入的POST等方法变成小写
}
//新建一个连接对象。标准浏览器中 都创建XMLHttpRequest 对象。非标准的浏览器中新建ActiveXObject
var xhr=null;
try{
xhr=new XMLHttpRequest;
}catch(e){
xhr=new ActiveXObject("Micsoft.XMLHTTP");
}
//如果用户用get方法,则需要拼接URL,将用户的数据放到URL传到后台
if(opt.type=="get"&&opt.data){
opt.url+="?"+opt.data;
}
xhr.open(opt.type,opt.url,true);//调用xhr.open方法连接后台借口
//如果是get方法,则send函数不传值、
if(opt.type="get"){
xhr.send(null);
}else{
//如果是post方法 则需要加一个连接头。且send函数中 传入用户的数据
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
xhr.send(opt.data);
}
//连接完毕,等后台返回结果和数据
xhr.onreadystatechange=function(){
if(xhr.readyState==4){//readyState有5种状态码。0,1,2,3,4
if(xhr.status==200){//http状态码为200代表成功
var data=xhr.responseText;//新建一个变量保存后台返回的数据
if(opt.dataType.toLowerCase()=="xml"){
data=xhr.responseXML;//如果后台返回的XML格式的数据.用responseXML来获取
}
if(opt.dataType.toLowerCase()=="json"){
data=JSON.parse(data);//如果是json 则用parse来将字符串转化为对象
}
if(typeof opt.success==='function'){
opt.success(data);//如果有成功的回调函数 则将后台数据当做回调函数的参数返回过去
}
}else{
alert("出错啦"+xhr.status)//如果状态码不为200,连接失败,返回http状态码
}

}

}
}

 

补充:

readyState的状态码含义

0:请求未初始化

1:服务器连接已建立

2:请求已接受

3:请求处理中

4:请求完成,且响应就绪。

原生JavaScript 封装ajax的更多相关文章

  1. 原生javascript封装ajax和jsonp

    在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp: <!DOCTYPE html> <html lang="en"> <head ...

  2. 原生JavaScript封装Ajax

    第一次开个人技术博客了,发的第一篇技术文章,欢迎指点…… 欢迎访问本人的独立博客:蓝克比尔 Ajax的实现主要分为四部分: 1.创建Ajax对象 // 创建ajax对象 var xhr = null; ...

  3. 原生 JavaScript 实现 AJAX、JSONP

    相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的 ...

  4. 原生JavaScript实现AJAX、JSONP

    相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的 ...

  5. 原生JavaScript写AJAX

    前端JavaScript: function ajaxGet(url, obj) { var request; if(window.XMLHttpRequest) { request = new XM ...

  6. 原生javaScript完成Ajax请求

    使用原生javaScript完成Ajax请求,首先应该创建一个对象XMLHttprequest,考虑到兼容低版本IE浏览器,使用ActiveXObject对象,代码入下: var request; i ...

  7. 原生JavaScript封装的jsonp跨域请求

    原生JavaScript封装的jsonp跨域请求 <!DOCTYPE html> <html lang="en"> <head> <met ...

  8. 使用原生JS封装Ajax

    使用原生 的JS封装 Ajax,实现 仿JQuery的Ajax,post,get三种异步请求方式: var MAjax = { //根据浏览器创建异步对象 createXhr: function () ...

  9. 【Ajax 3】JavaScript封装Ajax

    导读:上一篇博客简单介绍了一下对Ajax中的核心对象XMLHttpRequest的封装.那么为了方便对Ajax的应用,我们还需要进一步的对Ajax的基本功能进行下一步的封装,不得不说的是早就有人专门写 ...

随机推荐

  1. Using a Plugin

    创建hello.world <?xml version="1.0"?> <sdf version="1.4"> <world na ...

  2. google浏览器修改网页字符编码

    google浏览器修改网页字符编码 直接在google浏览器的应用拓展程序里面搜 Charset,第一个就是 于是就有了

  3. 安装oracle常见问题分析

    1,之前已经安装过软件,卸载不完全 /tmp/.oracle /tmp/ora* /var/tmp/ora* /etc/ora* 2,安装介质权限或者本身就有问题 3,oracle用户 $/HOME/ ...

  4. OpenSUSE42.3 leap 开启ssh登陆

    一.产看ssh是否安装 OpenSUSE:~ # rpm -qa | grep ssh libssh2-1-1.4.3-18.3.x86_64openssh-askpass-1.2.4.1-12.1. ...

  5. A电脑能ping 通B电脑,但B电脑无法ping能和访问B

    过程: A电脑共享了打印机,B电脑想连接A的打印机,发现拒绝访问,无法登录A电脑 问题: A电脑能ping 通B电脑,但B电脑无法ping能和访问B 原因:A电脑禁用了共享访问 处理:使用一键共享设置 ...

  6. Beautiful Soup的使用

    Beautiful Soup简单实用,功能也算比较全,之前下载都是自己使用xpath去获取信息,以后简单的解析可以用这个,方便省事. Beautiful Soup 是用 Python 写的一个 HTM ...

  7. C++中父类的虚函数必需要实现吗?

    一.情景 C++中父类的虚函数必需要实现吗? class Vir{ public: virtual void tryVirtual(); }; class CVir:public Vir{ publi ...

  8. HTML5:标记文字

    文本层面的元素(简称文本元素).把这些元素加入文本其中,也就引入了结构和含义. HTML5规范明白指出:使用元素应该全然从元素的语义出发.但这类元素中有些元素的含义很明白,有些则比較含糊. 在元素的使 ...

  9. [c++]基类对象作为函数參数(赋值兼容规则)

    编程处理教师的基本情况. 要求: 1.定义一个"person"类.用来存储及处理人的姓名.性别.年龄,成员函数自定: 2.定义"teacher"类,公有继承&q ...

  10. 扩展: 简介pyinstaller: py文件压缩成exe文件

    写在开始: 后缀 .py 的文件, 必须在装有python解释器, 和相对应的模块下才能运行. 对于装13来说,比较不方便. 如果人家电脑上也装上了python解释器,  说不好一眼就看穿了 自己写的 ...