ajax
发布时间:2020-12-16 02:59:07 所属栏目:百科 来源:网络整理
导读:一、ajax 流程原理 ajax,即在不重新加载整个网页的情况下,对网页的某部分进行更新。 下面演示ajax 的实现原理 配置: cd ajax 参考:http://www.expressjs.com.cn/starter/generator.html express --view=ejs myappcd myappnpm install 完整的ajax流程: 1
一、ajax 流程原理
下面演示ajax 的实现原理 配置: cd ajax 参考:http://www.expressjs.com.cn/starter/generator.html express --view=ejs myapp cd myapp npm install 完整的ajax流程: 1、 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); 2、准备发送 xhr.open('get','./01check.js?username='+uname+'&password='+pw,true);
? 3、执行发送动作 xhr.send(null);
? 4、监听response 回调函数 onreadystatechange 事件:每当 readyState 改变时,就会触发 onreadystatechange 事件。
? index.js 路由 ......
router.get('/api/one',(req,res,next)=>{
res.json({
status:200,result:'this is one.....'
})
});
/* GET home page. */
router.get('/one',function(req,next) {
res.render('index1',{ title: 'Express' });
})
...........
index.ejs: <body>
<button id="send">发送1个请求</button>
<script>
var btn = document.getElementById('send');
btn.addEventListener('click',function () {
// 使用原生的ajax 技术,发送一个网络请求
// 1.创建XMLHttpRequest对象
var xhr;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
// 2.准备发送
/*
参数1: 请求方式 (get/post)
参数2: 请求url
参数3: 是否异步
*/
xhr.open('get','http://localhost:3000/api/one',true);
// 3. 发送
xhr.send();
// 4. 监听服务器的响应
// 一旦服务器响应回来之后,就会执行这个函数
xhr.onreadystatechange = function () {
console.log(xhr.readyState);
if(xhr.readyState === 4){ // 代表服务器已经给了响应,不代表响应成功
if(xhr.status === 200){
console.log(xhr.response);
}
}
}
});
</script>
</body>
// 结果:
/*
2
3
4
{"status":200,"result":"this is one....."}
*/
? ? ? index.js 路由: router.get('/api/two',next)=>{
console.log(req.query);
res.json({
status:200,result:'this is two.....'
})
});
router.get('/two',next) {
res.render('index2',{ title: 'Express' });
});
index2.ejs <body>
<input id="account" type="text" name="account">
<input id="pwd" type="text" name="pwd">
<button id="send">发送一个请求</button>
<script>
window.onload=function () {
var btn = document.getElementById('send');
btn.onclick = function () {
// 使用原生的ajax 技术,发送一个网络请求
// 1.创建XMLHttpRequest对象
var xhr;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
// 从页面获取需要传递的数据
var userName = document.getElementById('account').value;
var pwd = document.getElementById('pwd').value;
// 2.准备发送
/*
参数1: 请求方式 (get/post)
参数2: 请求url
参数3: 是否异步
*/
// 后面跟一个随机数值,保证每次发送ajax请求,都是真的发然后从响应中获取最新数据,而不是从缓存中取得
xhr.open('get','http://localhost:3000/api/two?account=' + account + '&pwd=' + pwd + '&random=' + getRandomStr(),true);
// 3. 发送
xhr.send();
// 4. 监听服务器的响应
// 一旦服务器响应回来之后,就会执行这个函数
xhr.onreadystatechange = function () {
// 5. 处理响应的数据 (对方说话)
console.log(xhr.readyState);
if(xhr.readyState === 4){ // 代表服务器已经给了响应,不代表响应成功
if(xhr.status === 200){
console.log(xhr.response);
}
}
}
}
}
function getRandomStr() {
return Math.random() + (new Date().getTime())
}
</script>
</body>
前端打印: 2
3
4
{"status":200,"result":"this is two....."}
服务端打印: { account: '[object HTMLInputElement]',pwd: '123456',random: '1547356096169.2708' }
GET /api/two?account=[object%20HTMLInputElement]&pwd=123456&random=1547356096169.2708 200 8.824 ms - 42
? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



