博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原生JavaScript封装Ajax
阅读量:5333 次
发布时间:2019-06-15

本文共 2263 字,大约阅读时间需要 7 分钟。

Ajax的实现主要分为四部分:

1、创建Ajax对象

// 创建ajax对象var xhr = null;if(window.XMLHttpRequest){    xhr = new XMLHttpRequest();} else {    //为了兼容IE6    xhr = new ActiveXObject('Microsoft.XMLHTTP');}

2、连接服务器

// 连接服务器open(方法GET/POST,请求地址, 异步传输)xhr.open('GET',  'data.txt',  true);

3、发送请求

// 发送请求xhr.send();

4、接收返回数据

// 处理返回数据/*** 每当readyState改变时,就会触发onreadystatechange事件** readyState属性存储有XMLHttpRequest的状态信息** 0 :请求未初始化** 1 :服务器连接已建立** 2 :请求已接受** 3 : 请求处理中** 4 :请求已完成,且相应就绪*/xhr.onreadystatechange = function(){    if(xhr.readyState == 4){        /*        ** Http状态码        ** 1xx :信息展示        ** 2xx :成功        ** 3xx :重定向        ** 4xx : 客户端错误        ** 5xx :服务器端错误        */        if(xhr.status == 200){            success(xhr.responseText);        } else {            if(failed){                failed(xhr.status);            }        }    }}

Ajax封装函数:

function Ajax(type, url, data, success, failed){    // 创建ajax对象    var xhr = null;    if(window.XMLHttpRequest){        xhr = new XMLHttpRequest();    } else {        xhr = new ActiveXObject('Microsoft.XMLHTTP')    }     var type = type.toUpperCase();    // 用于清除缓存    var random = Math.random();     if(typeof data == 'object'){        var str = '';        for(var key in data){            str += key+'='+data[key]+'&';        }        data = str.replace(/&$/, '');    }     if(type == 'GET'){        if(data){            xhr.open('GET', url + '?' + data, true);        } else {            xhr.open('GET', url + '?t=' + random, true);        }        xhr.send();     } else if(type == 'POST'){        xhr.open('POST', url, true);        // 如果需要像 html 表单那样 POST 数据,请使用 setRequestHeader() 来添加 http 头。        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");        xhr.send(data);    }     // 处理返回数据    xhr.onreadystatechange = function(){        if(xhr.readyState == 4){            if(xhr.status == 200){                success(xhr.responseText);            } else {                if(failed){                    failed(xhr.status);                }            }        }    }} // 测试调用var sendData = {name:'asher',sex:'male'};Ajax('get', 'data/data.html', sendData, function(data){    console.log(data);}, function(error){    console.log(error);});

  

转载于:https://www.cnblogs.com/rusr/p/8036372.html

你可能感兴趣的文章
新手村之循环!循环!循环!
查看>>
正则表达式的用法
查看>>
线程安全问题
查看>>
SSM集成activiti6.0错误集锦(一)
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
MSChart的研究
查看>>
C# 索引器
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
delphi 内嵌汇编例子
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>