1.AJAX
A:Asynchoronous 异步的
J:JavaScript (JSON)
A:And
X:XML
XML和HTML
ML:标记语言
XML: extensive markup language 可扩展
相同点:都是用标签,属性,文本组织的
不同点:HTML:标签被w3cshool规定好的标签,标签的属性也是规定好的。
XML:可以自己定义规则。与平台无关的,客户端与服务端,客户端与客户端之间,
用来传递信息,数据描述的载体。
缺点:在传递数据时,描述信息的标签,占据了带宽。
后来,设备与设备之间传输信息的格式,由XML格式的信息传递,变为了JSON,
{‘name’:'tom','age':18}.
JSON (javascript object notation)javascript对象描述。
JSON和XML是一类,描述数据信息的格式
JavaScript和html是一类,都是语言
异步:不用等待执行结果,可以去执行其他事情。
同步:必须等待一个事情结束了,才能继续进行下一步。
程序中不是说异步就一定好,有各自的应用场合。
AJAX不是一种语言,是一种纯前端的技术(浏览器使用的)
浏览器里内嵌了一个对象,XMLHTTPRequest,通过该对象也能发起一个请求,并等待服务器的响应,
处理响应。简称xhr
浏览器地址栏里输入地址不就是发起请求吗?
打开一个网页,有黄金3秒钟,为了提高用户体验,先把静态的内容呈现,
特别复杂的内容会单独再发起请求,慢慢加载。整体
页面加载,给用户一个反馈。等用户看到后面的内容时,可能几十秒过去了,这时候已经加载出来了。
2.AJAX应用场合
1.单独发请求,单独响应,单独刷新局部页面。
2.注册
有些网站注册内容项比较多,因为用户名重复或者其中一项错误,但是只在
全部写完,点击注册时才知道错误,返回注册页面,之前输入的内容都没有了,
还得重新输入。
怎么能及时提示?
在输入完用户名后,输入其他内容时,已经去服务器请求,这样就能提前知道。
单独刷新页面,保留其他内容的基础上,只修改用户名。
3.使用AJAX的步骤
标准JS:
1.获得 XMLHTTPRequest对象
2.进行配置:包括请求路径,发送的数据,如何处理收到的响应
3.发送请求
标准Jquery
$.ajax(配置参数);
配置参数以字典,键值对的方式,也就是JS对象的形式传入。
在注册的html模板中加载JS,位置写到head中。
Jquery文件放到静态文件中
<script src="static/js/jquery-1.11.3.js"></script>
<script>
$(function (){
var inputusername = $('#username');
var spanusername = $('#span_username');
inputusername.blur(function () {
var name = inputusername.val();
$.ajax({
url:'/check',
data:{'username':name},
type:'post',
datatype:'json',
async:'true',
successs:function (date) {
console.log(data)
},
error:function (err) {
console.log('错误信息:'+err)
}
});
});
})
</script>
$(function () {}是当DOM树加载完毕后执行的
当输入完用户名之后去输入其他的时候,就去提交请求。当用户名文本框失去焦点blur的时候,就把用户名
发送给服务器。因为要获取这个文本框对象,这里增加id属性为input_username。
无论有没有重名,服务器必须给一个响应,如果不可用,提示该用户名已被占用。
直到用户名改为可用为止。
在注册模块中,增加一个<span>行内标记,服务器要动态修改它的文本内容,所以也需要获取该元素的JS对象,
也增加一个id属性span_username。
$.ajax()中的参数具体介绍:
url:ajax请求发送路径
data:发送数据
type:请求的类型
datatype:指明服务器返回的数据类型
async:'true'
success:function(){}请求成功触发得回调函数
error:function(){}请求失败触发的回调函数