封装ajax请求

当以上的一些列判断都成功时,说明已经获取到了服务器的值,我们可以使用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图如下:

在这里插入图片描述
在这里插入图片描述

现在想想如今流行的ajax方法库其实我们也可以自己封装,比如axios这个库,他是在promise的基础上进行的封装,在使用上更加的人性化。明天就自己封装一个axios方法。

计算机网络

  • HTTP 缓存

  • 你知道 302 状态码是什么嘛?你平时浏览网页的过程中遇到过哪些 302 的场景?

  • HTTP 常用的请求方式,区别和用途?

  • HTTPS 是什么?具体流程

  • 三次握手和四次挥手

  • 你对 TCP 滑动窗口有了解嘛?

  • WebSocket与Ajax的区别

  • 了解 WebSocket 嘛?

  • HTTP 如何实现长连接?在什么时候会超时?

  • TCP 如何保证有效传输及拥塞控制原理。

  • TCP 协议怎么保证可靠的,UDP 为什么不可靠?

算法

  • 链表

  • 字符串

  • 数组问题

  • 二叉树

  • 排序算法

  • 二分查找

  • 动态规划

  • BFS

  • DFS

  • 回溯算法

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值