AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
AJAX 优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
异步:当程序执行到耗时操作时,会跳过当前,继续执行后边的程序,当求得结果获取后,触发一个回调函数,回到当前函数的请求下来的结果(示例:饭店服务员-厨师)
同步:当程序执行到耗时操作时,会一直等待这个操作执行完毕的结果,如果没有结果,则后续的代码永远无法执行
xml:是一种数据在网络中(前后端)传输的数据格式。这种数据格式比较类似于html格式,都是利用标签来包裹我们所需要的数据,在解析数据时,就是使用dom操作来获取标签中的数值(几乎绝迹)
json:当前流行的轻量级数据传输格式,类似于对象,把我们所需要的数据利用对象属性,属性值的形式组织起来,在解析数据时,就是把json格式装换为对象格式,通过访问对象属性值的方法获取所需要的数据
什么是 AJAX ?
AJAX = 异步 JavaScript 和 XML。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页,如果需要更新内容,必需重载整个网页面。
现在就开始使用 AJAX
AJAX - 创建 XMLHttpRequest 对象
XMLHttpRequest 是 AJAX 的基础。
XMLHttpRequest 对象
所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
创建 XMLHttpRequest 对象
IE7+、Firefox、Chrome、Safari 以及 Opera均内建 XMLHttpRequest 对象。
创建 XMLHttpRequest 对象的语法:
variable=newXMLHttpRequest();
为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest 对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject
var xhr;
if(window.XMLHttpRequest){
xhr=newXMLHttpRequest();
}else{
xhr=newActiveXObject("Microsoft.XMLHTTP");}
AJAX - 向服务器发送请求请求
XMLHttpRequest 对象用于和服务器交换数据。
如需将请求发送到服务器,我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:
配置请求参数
接口地址和接口参数使用?链接;接口参数之间使用&连接;参数的key和value之间,用=连接;
xhr.open('GET','./data.xml?'+'username = '+encodeURI(usernameText)+'&'+'password = '+passwordText + Math.random(),true);
get请求的参数中如果有中文,则需要使用encodeURI();函数把中文转化为URI格式的码;
get 在正式建立和服务器的连接时,会在浏览器缓存中查找这个接口的请求记录,如果有,则缓存中加载数据,而不是从服务器中获取数据
对于数据实时性比较敏感的应用来说,必须保证同一个数据接口,每次请求都是从服务器中获取的,所以我们可以在接口某位拼接一个随机数函数,这样每次发起请求,随机数都不一样,接口也就不一样,在浏览器的缓存中就找不到该接口的请求记录,因此能够保证每次的请求的数据都是从服务器中获取的
发送请求
如果当前请求为post请求,则需要把请求参数放在send的方法中,如果为get请求,则在send方法中传递null;
xhr.send(null);
监听请求的状况
每当请求状态发生一次改变,则xhr对象下的readystate属性值就会改变为对应的值,顺带触发readystatechange事件
我们可以通过该事件监听当前请求发送分状态好人服务器的响应状态,来判断是否获取所需要的值
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
alert('请求成功');
console.log(xhr.responseText);
console.log(xhr.responseXML );
//如果说是请求的是xml文件是要用xml.responseXML 来获取数据;
//如果说是请求json文件是要用xhr.responseText来获取数据
}
}
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠