ajax请求

server/2024/10/15 19:15:01/

ajax实现的步骤

1.创建xhr[XmlHttpRequest]对象  var xhr = new XMLHttpRequest();

2.配置请求信息 xhr.open("get|post","url",false/true);

3.发送请求  xhr.send();

4.判断请求是否发送成功发

if(http_request.readyState==4 && http_request.status==200){}

onreadystatechange (用于异步)属性定义当 readyState 发生变化时执行的函数

属性描述
onreadystatechange定义了当 readyState 属性发生改变时所调用的函数。
readyState保存了 XMLHttpRequest 的状态。 0: 请求未初始化 1: 服务器连接已建立 2: 请求已接收 3: 正在处理请求 4: 请求已完成且响应已就绪
status200: "OK" 403: "Forbidden" 404: "Page not found"如需完整列表,请访问 Http 消息参考
statusText返回状态文本(例如 "OK" 或 "Not Found")

 把字符串转化为json格式:  var json=JSON.parse(str);

ajax的请求方式

get同步请求

javascript"> //get同步请求function getsync(url,params,okfun,errfun){if (window.XMLHttpRequest) {var xhr = new XMLHttpRequest();} else if (window.ActiveXObject) {var xhr = new ActiveXObject("Microsoft.XMLHTTP");}xhr.open('get',url+'?'+params,false);xhr.send();if(xhr.status == 200 && xhr.readyState == 4){okfun(xhr.responseText);}else{errfun("wrong")}}

get异步请求

javascript">//get异步请求function getasync(url,params,okfun,errfun){if (window.XMLHttpRequest) {var xhr = new XMLHttpRequest();} else if (window.ActiveXObject) {var xhr = new ActiveXObject("Microsoft.XMLHTTP");}xhr.open('get',url+'?'+params,true);xhr.send();xhr.onreadystatechange=function(){if(xhr.readyState == 4){if(xhr.status == 200){okfun( xhr.response);} else{errfun('error')}}}}

post同步请求

javascript"> //post的同步请求function postsync(url,params,okfun,errfun){if (window.XMLHttpRequest) {var xhr = new XMLHttpRequest();} else if (window.ActiveXObject) {var http_request = new ActiveXObject("Microsoft.XMLHTTP");}xhr.open('post',url ,false);//设置请求头xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.send(params);if(xhr.status==200 && xhr.readyState==4){okfun(xhr.responseText);  }else{errfun("error");}}

post异步请求

javascript">//post的异步请求function postasync(url,params,okfun,errfun){if (window.XMLHttpRequest) {var xhr = new XMLHttpRequest();} else if (window.ActiveXObject) {var http_request = new ActiveXObject("Microsoft.XMLHTTP");}xhr.open('post',url ,true);//设置请求头xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.send(params);xhr.onreadystatechange=function(){if(xhr.readyState==4){if(xhr.status==200){okfun(xhr.response)}else{errfun('error');}}}}

懒加载

懒加载也叫延迟加载,指的是在长网页中延迟加载图像,是一种很好优化网页性能的方式

懒加载的优点

1.提升用户体验,加快首屏渲染速度

2.减少无效资源的加载

3.防止并发加载的资源过多会阻塞js的加载

懒加载的原理:

首先将页面上的图片的 src 属性设为空字符串,而图片的真实路径则设置在 data-original 属性中,当页面滚动的时候需要去监听 scroll 事件,在 scroll 事件的回调中,判断我们的懒加载的图片是否进入可视区域,如果图片在可视区内则将图片的 src 属性设置为 data-original 的值,这样就可以实现延迟加载。

<style>.goods{width: 300px;height: 200px;border: 1px solid #f00;}img{width: 100px;}
</style>
<script src="./xiaomi-data.js"></script>
<div id="content"></div>
<script>var miData = data.data;var str = '';var cont = document.getElementById('content');function loadInitData(){for(var i=0;i<miData.length;i++){str += `<div class="goods"><img src="./img-placeholder.png" alt="" data-src="${miData[i].info.image}">                <div>价格:${miData[i].info.price}</div>                 <div>销量:${miData[i].info.comments}</div>                <div>${miData[i].info.name}</div>             </div>`;}cont.innerHTML += str;}// 页面初始化时,判断图片的加载时机function loadImg(){var imgList = cont.getElementsByTagName('img');var top;// 页面的高度var winHeight = document.documentElement.clientHeight;for(var i=0;i < imgList.length;i++){// 获取图片距离页面顶端的偏移值top = imgList[i].offsetTop;if(top <= winHeight){// 加载图片:把data-src中的数据放在src中console.log('加载第一幅图片',top,winHeight);imgList[i].src = imgList[i].dataset.src;}}}function onScroll(){window.onscroll = function(){var scrollTop = document.documentElement.scrollTop;var winHeight = document.documentElement.clientHeight;var imgList = cont.getElementsByTagName('img');var top;// 页面的高度var winHeight = document.documentElement.clientHeight;for(var i=0;i < imgList.length;i++){// 获取图片距离页面顶端的偏移值top = imgList[i].offsetTop;if(winHeight + scrollTop >= top){imgList[i].src = imgList[i].dataset.src;}}}}loadInitData();loadImg()onScroll()
</script>


http://www.ppmy.cn/server/132331.html

相关文章

Java基础(1)

1.来源 Java最初是由美国Sun公司开发的&#xff0c;最初是为了开发面向家电产品的软件而设计的。1981年&#xff0c;Sun公司在研究‌C的基础上&#xff0c;重新定义了一套新的语言系统&#xff0c;这就是Java的前身——‌Oak。后来经过不断改进&#xff0c;Sun公司于1995年正式…

算法刷题技巧

算法题&#xff1a;https://leetcode.cn/studyplan/top-100-liked/ 哈希表 使用哈希表&#xff0c;增删改查的时间复杂度均为O(1)。何时使用哈希表&#xff1f; 在某个区域内查找一个已知元素&#xff0c;可以使用哈希表作为这个区域根据一个特征对元素进行分类&#xff0c;特征…

腾讯图标点选模型识别

注意&#xff0c;本文只提供学习的思路&#xff0c;严禁违反法律以及破坏信息系统等行为&#xff0c;本文只提供思路 如有侵犯&#xff0c;请联系作者下架 该文章模型已经上线ocr识别网站&#xff0c;欢迎测试&#xff01;&#xff01;&#xff0c;地址&#xff1a;https://yxl…

‌如何在‌Windows系统中开启和关闭预览窗格/详细信息预览

Win11升级后&#xff0c;会自动在右侧预览文件&#xff0c;很是影响操作。今天&#xff0c;就一起来了解如何打开和关闭的吧&#xff01; 预览窗格 详细信息窗格 解决办法 打开“此电脑”&#xff0c;选择“查看”&#xff0c;关闭“预览窗格”和“详细信息窗格”。

giugughk

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

WPF 自定义用户控件(Content根据加减按钮改变值)

前端代码&#xff1a; <UserControl.Resources><Style x:Key"Num_Button_Style" TargetType"Button"><Setter Property"MinWidth" Value"30" /><Setter Property"Height" Value"35" />&l…

2024.10.14 软考学习笔记

刷题网站&#xff1a; 软考中级软件设计师在线试题、软考解析及答案-51CTO题库-软考在线做题备考工具

Sql语句解析工具类

需求&#xff1a; 项目 web-sql模块&#xff0c;需要根据 sql 解析获取数据库表&#xff0c;然后对&#xff08;金库&#xff09;表权限进行校验。 金库表&#xff1a;用户查询该表前需要审批。 一、Druid (推荐) 添加依赖&#xff1a; <dependency><groupId>com…