xml.open()
,当发送GET请求的时候,open方法不需要传递参数,当发送的是post请求的时候,这个send()方法就需要添加上传递的内容。实例代码:xml.open({JSON.stringify(name:'Jimmy',age:22}))
。
- 监听状态的变化
使用异步对象的onreadystatechange属性来判断请求状态,实例代码:xml.onreadystatechange = ()=>{}
来进行对不同状态下的处理
readyState
属性,表示的是连接状态的属性值,有1-4,其中当属性值为4时,代表的是连接成功。
status
属性,表示的是服务器反馈的状态码,200-300之间和一个特殊的304表示的都是请求成功,其中304表示的是使用缓存返回值,这个状态吗也是尤为的重要,一般500的状态码表示的是服务器错误。
- 处理的返回结果
当以上的一些列判断都成功时,说明已经获取到了服务器的值,我们可以使用responseText
属性来接收我们从服务器上获取的值。
GET请求
- get请求也是可以传值的,get请求传的值一般都是直接在url中能够体现,例如:
http://127.0.0.1:8080/name?name=jimmy&age=22
,这种类型的就是get传值,ajax发送get请求的时候按照上面的步骤正常的操作就行了。
POST请求
- 利用ajax发送post请求时如果不传值,则按照如上的5步操作就行,只是因为post请求传递参数时数据实在请求体中的,所以需要在open()方法和send()方法之间多加一条语句
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded")
,之后send()方法中传递参数例如xml.open({JSON.stringify(name:'Jimmy',age:22}))
。
跨域问题
在前后端之间的数据交互上,经常会发生跨域问题,原因时前后端之间遵循的原则是同源原则,意思是两个点之间必须是在同一个源下,也就是说协议,域名,端口必须都保持一致的情况下,两者之间才可以进行交互,两者之间只要有一点不一样,就会发生跨域问题。
为了避开这个问题,现在常常有三种解决方案,分别是:
-
jsonp结局跨域:jsonp请求的实质是利用我们前端的script标签进行访问数据,script标签是不会触发跨域的,这个方法使用的很多,但是步推荐使用。
-
前端j解决跨域:创建proxy代理的方式解决跨域,这个方法只需要处理前端,后端的代码可以不动。
-
后端解决跨域:在node.js中通过类似使用中间键的概念,在路由之前对本身进行处理,因为我demo中使用的是原生的http模块来写的,所以我展示一个http模块解决跨域的方法。
细节知识点
-
url中是不能够传递中文的,可能我们在浏览器写的时候可以写中文,是因为浏览器默认会将所有文字转码,在JS中也是很容易就可以操作,JS自带两个个工具方法
encodeURI()
和decodeURI()
两个方法是分别对中文进行转码和解码的操作 -
当想要手动的终止请求,可以使用
xml.absort()方法
其中xml就是我们创建的异步对象。 -
做为程序员,始终都要考虑到用户的体验,当用户因为网络的原因,访问时间过长的时候,我们就应该终止访问的进行,这点就是我们封装自己的ajax请求中需要做的事情了。
自己封装的ajax图如下:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)
最后
文章到这里就结束了,如果觉得对你有帮助可以点个赞哦,如果有需要前端校招面试题PDF完整版的朋友可以点击这里即可获取,包括答案解析。
tps://bbs.csdn.net/topics/618191877),包括答案解析。**
[外链图片转存中…(img-fDzdYwP4-1711768231435)]