目录
(异步交互:客户端发送请求到服务端的时候,无论服务端是否反应,用户都可以进行操作)
AJAX:
(异步交互:客户端发送请求到服务端的时候,无论服务端是否反应,用户都可以进行操作)
1:请求案例:
$.ajax({
url:"/WEB22/ajaxServlet2",
async:true,//是否异步
type:"POST",//请求方式
data:{"name":"lucy","age":18},//请求数据
success:function(data){//请求成功
alert(data.name);
},
error:function(){//请求失败
alert("请求失败");
},//请求数据类型
dataType:"json"
});
}
$.ajax({
async: false,
type: "POST",
url: "/Myself/dbreturn",
data: {
F_FIELNAME: F_FIELNAME,
F_USERID: F_USERID,
DBRETURN: DBRETURN,
url:url
},
dataType: "json",
success: function (data) {
alert("还原成功!"),
RefreshData();
},
error: function () {
alert("还原失败")
}
})
$.ajax({
type: "POST",
url: "/Myself/adddbreturn",
data: {
F_USERID: F_USERID,
F_FIELNAME: F_FIELNAME,
F_DDBACKTIME: F_DDBACKTIME,
F_REMARK: F_REMARK
},
dataType: "json",
success: function (data) {
// alert("添加还原记录成功")
},
error: function () {
alert("添加还原记录失败")
}
})
AJAX关闭异步,一个按钮按顺序执行2个AJAX请求
2:运行原理:
页面发起请求,会把请求发送给浏览器内核中的AJAX引擎,AJAX引擎会提交到服务器端,这段时间客户端可以进行任何操作,直到服务器端将数据返回给ajax引擎,会触发你设置的事件,执行你写的js代码实现页面功能。
3:乱码问题:
-
POST:不用管,已经在内部解决了乱码
-
GET:先编码再解码
-
面试准备:
-
1:同步&&异步
-
异步传输是面向字符的传输,它的单位是字符。
-
(告诉浏览器去做,告诉是一瞬间的事情,然后可以继续执行下一步,等到结果返回,浏览器会通知js执行相应的回调)
-
同步传输是面向比特的传输,它的单位是桢。
-
(必须操作完才会执行下一步,等待期间不可执行任何接下来的js代码)
-
2:包含技术:
-
使用CSS和XHTML来表示。
-
使用DOM模型来交互和动态显示。
-
使用XMLHttpRequest和服务器进行异步通信(重点)。
-
使用javascript来绑定和调用。
-
除了XmlHttpRequest对象以外,其它所有的技术都是基于web标准并且已经得到了广泛使用的。
3:原理
通过XMLHTTPRequest(ajax的核心机制)对象来向服务器发送异步请求,从服务器获得数据,然后用js操作DOM来更新页面。
相当于在用户和服务器之间加了一个中间层,是用户操作和服务器响应异步化,并不是所有请求都提交给服务器,想一些数据验证和数据处理都交给AJAX引擎自己来做,只有确定需要从服务器读取新数据时再由AJAX引擎代为向服务器提交请求。
4:优点:
1:无刷新更新数据
不刷新整个页面的前提下与服务器端交互数据,并且避免了再网络上发送那些没有改变的信息,减少等待数据,提高用户提亚
2:异步方式与服务器通信
不打断用户操作
3:前端和后端负载均衡
把服务器端负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器的负担。AJAX的原则是“按需取数据”,可以最大程度的减少多余请求和响应服务器造成的负担,提高性能。
4:基于标准化,无需下载浏览器插件或者小程序
5:界面与应用分离,减少对页面的修改造成的WEB应用错误,提高效率。
5:缺点:
1:无法回退
AJAX无法实现点击后退按钮能够取消他们的前一次操作,因为动态更新,对浏览器机制进行了破坏,无法回退。
2:安全问题
ajax难以避免一些安全漏洞,比如SQL注入攻击,跨站点攻击这些
3:搜索引擎支持较弱
ajax会增大网络数据的流量,从而降低系统的性能
4:违背URL和资源定位的初衷
才有ajax的技术,同一个URL地址下看到的内容可能是不一样的
5:不能很好支持移动设备
在手机的浏览器上打开采用ajax技术的网站时,目前是不支持的
6:多余代码太多
层层包含js文件是ajax 的通病,加上以往的服务端代码都放到客户端,容易出错