首页 » 网站建设 » ajax封装php技巧_原生ajax封装

ajax封装php技巧_原生ajax封装

访客 2024-11-30 0

扫一扫用手机浏览

文章目录 [+]

2. XMLHttpRequest工具

可以说ajax的核心工具便是XMLHttpRequest工具,不过浏览器对实在现不同,在IE中xhr工具是通过MSXML库中的ActiveX工具实现的,MSXML库存在三种不同的xhr工具,即MSXML2.XMLHttp MSXML2.XMLHttp.3.0 MSXML2.XMLHttp.6.0,除此之外在IE7+和其他浏览器中可以利用XMLHttpRequest布局函数:var xhr = new XMLHttpRequest(); 来创建xhr工具。
考虑到兼容性,最好是编写一个函数来封装:

ajax封装php技巧_原生ajax封装

createXHR函数返回的是是一个xhr工具,里面的arguments.callee是一个指针,指向的是拥有arguments工具的函数,在这里便是createXHR,关于函数内部两个分外工具arguments和this我就不先容了。

ajax封装php技巧_原生ajax封装
(图片来自网络侵删)

3.XHR工具用法

上面xhr工具采取了get办法给demo.php发送了一个要求,并带了一个参数rand,值为随机数,这紧张是为了兼容IE,由于在IE低版本中会在第一调用之后利用缓存,第三个参数false代表的是同步,默认true为异步,两者的差异是同步就像一个行列步队,必须先实行完ajax代码在去实行下面的代码,而异步就像是一个人做两件事,即一边实行ajax代码,一边实行下面的代码,一样平常来说异步能给用户带来更好的用户体验。
下面的send()代表的是发送一个要求,把稳上面的open方法并没有发送,它只是初始化。

如果换成异步的办法,用法就不同了。
我们想想一个人要想做两件事,是不是要在做一件事的时候有一些提示?对,我们这边理解为onreadystateStatechange事宜,当程序在实行下面的代码时,通过改事宜的改变来提示我们该做ajax部分的事了。

xhr工具readyState属性,表示要求/相应的过程。
分为五个:0 未初始化,尚未代用open方法,1 启动,已经调用open方法但未调用send方法,2 发送 已调用send但未吸收到相应,3 吸收到部分数据,4 数据全部吸收,相应完成。
我们关注的紧张是4,也便是可以用了。

xhr工具responseText属性,即相应被返回的文本。

xhr工具status属性,相应的状态,比如200表示成功,404表示页面找不到。

4.ajax封装

细节就不多说了,里面涉及了工具字面量传参,回调函数的利用,测试须要编写一个php页面,并在Apache做事器上运行,不哔哔了,直接上代码:

//封装ajax

function ajax(obj) { //吸收一个工具

var xhr = createXHR();

obj.url = obj.url + '?rand=' + Math.random(); //rurl

obj.data = params(obj.data); //提交的数据

//判断是那种办法提交的

if (obj.method === 'get') {

obj.url += obj.url.indexOf('?') == -1 ? '?' + obj.data : '&' + obj.data;

}

alert(obj.url);

if (obj.anync === true) { //如果是同步则实行

xhr.onreadystatechange = function () { //return 并不能通报给ajax函数

if (xhr.readyState == 4) {

callback();

}

}

}

xhr.open(obj.method, obj.url, obj.anync); //准备发送

if (obj.method == 'post') {

xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //仿照表单提交

xhr.send(obj.data);

} else {

xhr.send(null);

}

if (obj.anync === false) {

if (xhr.readyState == 4) {

callback();

}

}

function callback() {

if (xhr.status == 200) { //相应状态码

obj.success(xhr.responseText); //回调函数并传参 并在这里实行

} else {

alert('数据返回失落败,状态码:' + xhr.status + '状态信息:' + xhr.statusText);

}

}

}

//名值对转换为字符串

function params(data) {

var arr = [];

for (var i in data) {

arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i])); //编码 防止其他字符串混进来

}

return arr.join('&'); //数组转换成字符串

}

//调用ajax

addEvent(document, 'click', function () {

ajax({ //工具传参

method: 'post',

url: 'demo.php',

data: { //传入的是一个工具 里面是名值对的形式

'name': 'xia&ohe',

'age': 100

},

success: function (text) {

alert(text);

},

anync: false

});

});

至此,ajax封装完成,上面我只是抛砖引玉,实在我也是个半吊子,希望和大家共同学习进步,如果喜好,那就关注我吧!

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读1 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读1 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读1 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读1 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读1 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读1 评论0