批改状态:未批改
老师批语:
今天学习Ajax,把Ajax的原理总结如下:
一、什么是Ajax
Ajax(Asynchronous JavaScript and XML的缩写)是一种异步请求数据的web开发技术,对于改善用户的体验和页面性能很有帮助。简单地说,在不需要重新刷新页面的情况下,Ajax 通过异步请求加载后台数据,并在网页上呈现出来。常见运用场景有表单验证是否登入成功、百度搜索下拉框提示和快递单号查询等等。
Ajax目的:提高用户体验,较少网络数据的传输量
二、Ajax原理是什么
Ajax最核心的依赖是浏览器提供的XMLHttpRequest对象,它扮演的角色相当于一个代理,使得浏览器可以发出HTTP请求与接收HTTP响应。浏览器接着做其他事情,等收到XMLHttpRequest返回来的数据再渲染页面。
三、Ajax的使用
1.创建Ajax核心对象XMLHttpRequest
var xhr=new XMLHttpRequest();
2.向服务器发送请求
xhr.open(method,url,async); //method:请求的类型,GET 或 POST; //url:文件在服务器上的位置; //async:true(异步)或 false(同步),默认为true; send(string); //post请求时才使用字符串参数,GET请求不用带参数或者填入null。
注意:使用post请求一定要设置请求头的格式内容
xhr.open("POST","test.html",true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("fname=Henry&lname=Ford"); //post请求参数放在send里面,即请求体3.服务器响应处理(区分同步跟异步两种情况)
responseText 获得字符串形式的响应数据。
responseXML 获得XML 形式的响应数据。
①同步处理
1. xhr.open("GET","info.txt",false);
2. xhr.send();
3. document.getElementById("myDiv").innerHTML=xhr.responseText; //获取数据直接显示在页面上②异步处理
要在请求状态改变事件中处理。
1. xhr.onreadystatechange=function() {
2. if (xhr.readyState==4 &&xhr.status==200) {
3. document.getElementById("myDiv").innerHTML=xhr.responseText;
4. }
5. }实战案例
1.Ajax表单验证:
获取用户的登录信息后,提交数据到服务器进行异步验证,待结果返回后跳转。
以下是JavaScript代码:
<script type ="text/javascript">
let submitButton = document.getElementById('submitButton');
let errMailTip = document.getElementById('errMailTip');
let errPswTip = document.getElementById('errPswTip');
let resultTip = document.getElementById('resultTip');
submitButton.addEventListener('click', F_checkUser, false);
formLogin.email.addEventListener('input', function() {
errMailTip.innerText = '';
resultTip.innerText = '';
}, false);
formLogin.password.addEventListener('input', function () {
errPswTip.innerText = '';
resultTip.innerText = '';
}, false);
function F_checkUser() {
let userInfo = F_isEmpty(formLogin, errMailTip, errPswTip);
if (userInfo) {
F_verify(userInfo, resultTip)
} else {
return false;
}
}
function F_isEmpty($form_Login, $err_Mail_Tip, $err_Psw_Tip) {
let email_Temp = $form_Login.email.value.trim();
let password_Temp = $form_Login.password.value.trim();
if (email_Temp.length === 0) {
$err_Mail_Tip.innerText = '邮箱不能为空';
$form_Login.email.focus();
return false;
} else if (password_Temp.length === 0){
$err_Psw_Tip.innerText = '密码不能为空';
$form_Login.password.focus();
return false;
}
return {
email: email_Temp,
password: password_Temp
};
}
function F_verify($user_Info, $result_Tip) {
let data_Temp = 'email=' + $user_Info.email + '&password=' + $user_Info.password;
let request_Temp = new XMLHttpRequest();
request_Temp.onreadystatechange = function(){
if (request_Temp.readyState === 4 && request_Temp.status === 200) {
$result_Tip.innerHTML = request_Temp.responseText;
}
return false;
};
request_Temp.open('post','admin/check.php',true);
request_Temp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
request_Temp.send(data_Temp);
}
</script>2.Ajax制作选项卡
以下是JavaScript代码
<script type = "text/javascript">
let tabBox = document.getElementsByClassName('box')[0];
let tabContent = tabBox.getElementsByTagName('ul')[0];
let tabList = tabContent.getElementsByTagName('li');
let tabGroup = tabBox.getElementsByTagName('div');
for (let i=0; i<tabList.length; i++) {
tabList[i].index = i;
tabList[i].addEventListener('click', F_getData, false);
}
function F_getData() {
for (let i=0; i<tabList.length; i++) {
tabList[i].className = '';
tabGroup[i].style.display = 'none';
}
this.classList.add('active');
tabGroup[this.index].style.display = 'block';
let n = this.index;
let request = new XMLHttpRequest();
request.open('get', 'admin/data.php?p='+n, true);
request.send(null);
request.onreadystatechange = function () {
if (request.readyState === 4) {
tabGroup[n].innerHTML = request.responseText;
}
};
}
let defaultTab = tabContent.firstElementChild;
defaultTab.addEventListener('click', show, false);
let event = new Event('click');
defaultTab.dispatchEvent(event);
function show() {
let request = new XMLHttpRequest();
request.onreadystatechange = function () {
if (request.readyState === 4) {
tabGroup[0].innerHTML = request.responseText;
}
};
request.open('get', 'admin/data.php?p=0', true);
request.send(null);
}
</script>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号