网站首页 > 技术文章 正文
原创: zzz
一、ajax的简介
Ajax被认为是(Asynchronous(异步) JavaScript And Xml的缩写)。现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax.
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式 。
二、ajax的缺陷
AJAX大量使用了JavaScript和AJAX引擎,而这个取决于浏览器的支持。IE5.0及以上、Mozilla1.0、NetScape7及以上版本才支持,Mozilla虽然也支持AJAX,但是提供XMLHttpRequest的方式不一样。所以,使用AJAX的程序必须测试针对各个浏览器的兼容性。
AJAX更新页面内容的时候并没有刷新整个页面,因此,网页的后退功能是失效的;有的用户还经常搞不清楚现在的数据是旧的还是已经更新过的。这个就需要在明显位置提醒用户“数据已更新”。
对流媒体的支持没有FLASH好。
一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax。
三、ajax的四种type类型:
1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。
简单的说就是
get理解为查询 delete就是删除 post就是新增 put就是更新数据
四、ajax的原生写法
window.onload = function () {
var oBtn = document.getElementById("btn1");
oBtn.onclick = function () {
//1.创建ajax对象
//只兼容非ie6的浏览器,在ie6浏览器上运行会提示没有被定义
//var oAjax = new XMLHttpRequest();//这才是ajax实际的请求
//alert(oAjax);
//ie6浏览器下按照下面方法写,但是在别的浏览器中不能用,会报错。
//var oAjax = new ActiveXObject("Microsoft.XMLHTTP");
//alert(oAjax);
//鉴于上面出现的问题,可以采取下面的方法解决,用if判断是否为IE6浏览器
if (window.XMLHttpRequest)//如果有XMLHttpRequest,那就是非IE6浏览器。()里面加window的原因下面会有描述。
{
var oAjax = new XMLHttpRequest();//创建ajax对象
}
else//如果没有XMLHttpRequest,那就是IE6浏览器
{
var oAjax = new ActiveXObject("Microsoft.XMLHTTP");//IE6浏览器创建ajax对象
}
//2.连接服务器
//open(方法、文件名、异步传输)
//方法:
//传输方式是get方式还是post方式。
//文件名
//告诉服务器要读哪个文件
//异步传输
//异步:多件事一件一件的做
//同步:多件事情一起进行
//但是js里面的同步和异步和现实的同步异步相反。
//同步:多件事一件一件的做
//异步:多件事情一起进行
//ajax天生是用来做异步的
oAjax.open("GET", "a.txt?t='+new Date().getTime()", true);//加上t='+new Date().getTime()"的目的是为了消除缓存,每次的t的值不一样。
//3.发送请求
oAjax.send();
//4.接收返回
//客户端和服务器端有交互的时候会调用onreadystatechange
oAjax.onreadystatechange = function () {
//oAjax.readyState //浏览器和服务器,进行到哪一步了。
//0->(未初始化):还没有调用 open() 方法。
//1->(载入):已调用 send() 方法,正在发送请求。
//2->载入完成):send() 方法完成,已收到全部响应内容。
//3->(解析):正在解析响应内容。
//4->(完成):响应内容解析完成,可以在客户端调用。
if (oAjax.readyState == 4) {
if (oAjax.status == 200)//判断是否成功,如果是200,就代表成功
{
alert("成功" + oAjax.responseText);//读取a.txt文件成功就弹出成功。后面加上oAjax.responseText会输出a.txt文本的内容
}
else {
alert("失败");
}
}
};
}
};
五、ajax的jquery写法:
$.ajax({
url: "http://www.microsoft.com", //请求的url地址
dataType: "json", //返回格式为json
async: true, //请求是否异步,默认为异步,这也是ajax重要特性
data: {
"id": "value"
}, //参数值
type: "GET", //请求方式
processData: false, //对表单data数据是否进行序列化
contentType: false, //dataType设置你收到服务器数据的格式
xhr: function () { //ajax进度条
var xhr = $.ajaxSettings.xhr();
if (onprogress && xhr.upload) {
xhr.upload.addEventListener("progress", progressBar, false);
return xhr;
}
},
beforeSend: function () {
//请求前的处理
},
success: function (req) {
//请求成功时处理
},
complete: function () {
//请求完成的处理
},
error: function () {
//请求出错处理
}
});
当然,jquery还有很多简单变形的写法。
最后,我自己是一名从事了多年开发的Java老程序员,辞职目前在做自己的Java私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的Java学习干货,可以送给每一位喜欢Java的小伙伴,想要获取的可以关注我的头条号并在后台私信我:01,即可免费获取。
猜你喜欢
- 2024-09-12 不得不佩服,美观小巧的网页内容编辑器——ContentTools
- 2024-09-12 监听设备方向变化?分享 1 段优质 JS 代码片段!
- 2024-09-12 一分钟了解ajax。(一分钟了解网络广告)
- 2024-09-12 Jquery一个简单的注册验证(jquery注册点击事件)
- 2024-09-12 [前端请求]Ajax知识点 Jquery接口封装 fetch原生js请求
- 2024-09-12 JQuery笔记(下)(jquery gt)
- 2024-09-12 Vue.js 快速上手(vue.js怎么学)
- 2024-09-12 Ajax 的全面总结(ajax概述)
- 2024-09-12 html file选择文件一次之后就失效了怎么办
- 2024-09-12 jQuery入门2(jquery入门教程)
- 11-17win10中文语言包官方下载(windows 10 语言包)
- 11-17无限送真充手游(无限送真充手游平台)
- 11-17电脑上如何添加打印机设备(电脑如何添加打印机设备显示驱动程序出错)
- 11-17路由器的账号密码在什么地方看
- 11-17电脑怎么恢复出厂设置windows10
- 11-17浏览器打开网站403(禁止小孩进入的网站怎么打开)
- 11-17五笔打字输入法(五笔打字输入法口诀)
- 11-17双硬盘怎么设置主硬盘(双硬盘怎么设置主从盘)
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (77)
- vector线程安全吗 (73)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)
