当前位置: 首页 > news >正文

网站建设收费项目专业的铁岭做网站公司

网站建设收费项目,专业的铁岭做网站公司,昆明app制作,网站备案更换众所周知它们都用来发送请求#xff0c;其实它们区别还蛮大的。这也是面试中的高频题#xff0c;本文将详细进行讲解。 1. ajax 英译过来是Aysnchronous JavaScript And XML#xff0c;直译是异步JS和XML#xff08;XML类似HTML#xff0c;但是设计宗旨就为了传输数据其实它们区别还蛮大的。这也是面试中的高频题本文将详细进行讲解。 1. ajax 英译过来是Aysnchronous JavaScript And XML直译是异步JS和XMLXML类似HTML但是设计宗旨就为了传输数据现已被JSON代替解释一下就是说以XML作为数据传输格式发送JS异步请求。但实际上ajax是一个一类技术的统称的术语包括XMLHttpRequest、JS、CSS、DOM等它主要实现网页拿到请求数据后不用刷新整个页面也能呈现最新的数据。 下面我们简单封装一个ajax请求【面试高频题】 const ajaxGet function (url) {const xhr new XMLHttpRequest()xhr.open(get, url)xhr.onreadystatechange () {if (xhr.readyState 4) {if (xhr.status 200 xhr.status 400) {console.log(xhr.response); // 响应结果}}}xhr.onerror (error) {console.log(error, xhr.status)}xhr.send() }2. fetch 它其实就是一个JS自带的发送请求的一个api拿来跟ajax对比是完全不合理的它们完全不是一个概念的东西适合拿来和fetch对比的其实是xhr也就是上面封装ajax请求的代码里的XMLHttpRequest这两都是JS自带的发请求的方法而fetch是ES6出现的自然功能比xhr更强主要原因就是它是基于Promise的它返回一个Promise因此可以使用.then(res )的方式链式处理请求结果这不仅提高了代码的可读性还避免了回调地狱(xhr通过xhr.onreadystatechange () {}这样回调的方式监控请求状态要是想在请求后再发送请求就要在回调函数内再发送请求这样容易出现回调地狱)的问题。而且JS自带语法也非常简洁几行代码就能发起一个请求用起来很方便据说大佬都爱用。 它的特点是 使用 promise不使用回调函数。采用模块化设计比如 rep、res 等对象分散开来比较友好。通过数据流对象处理数据可以提高网站性能。 下面我们简单写个fetch请求的示例 // get请求 fetch(http://127.0.0.1:8000/get).then(res {if (!res.ok) {throw new Error(请求错误状态码为, res.status)}return res.text() }).then(data {console.log(data); }) // post请求 fetch(http://127.0.0.1:8000/post, {method: post,headers: {Content-Type: application/json},mode: no-cors, // 设置cors表示只能发送跨域的请求no-cors表示跨不跨域都能发body: JSON.stringify({name: zhangsan,age: 18}) }).then(res {return res.json() }).then(data {console.log(data); })3. axios axios是用于网络请求的第三方库它是一个库。axios利用xhr进行了二次封装的请求库xhr只是axios中的其中一个请求适配器axios在nodejs端还有个http的请求适配器axios xhr http它返回一个Promise。【项目中经常需要封装的axios】 它的特点 在浏览器环境中创建 XMLHttpRequests在node.js环境创建 http 请求返回Promise拦截请求和响应自动转换 JSON 数据转换请求数据和响应数据取消请求 它的基础语法是 // 发送 Get 请求 axios({method: get,url: ,params: {} // 查询query使用params }) // 发送 Post 请求 axios({method: post,url: ,data: {} // 请求体body用data })下面我们在vue项目中封装一个使用axios实现的请求。 libs/config.js配置文件 const serverConfig {baseUrl: http://127.0.0.1:8000, // 请求基础地址可根据环境自定义useTokenAuthentication: false, // 是否开启token认证 }; export default serverConfig;libs/request.js封装请求 import axios from axios; // 第三方库 需要安装 import serverConfig from ./config; // 创建axios实例 const apiClient axios.create({baseURL: serverConfig.baseUrl, // 基础请求地址withCredentials: false, // 跨域请求是否需要携带cookieheaders: {Accept: application/json,Content-Type: application/json,},timeout: 10000, // 请求超时时间 });// 请求拦截 apiClient.interceptors.request.use((config) {// 请求发送前的处理逻辑 比如token认证设置各种请求头啥的// 如果开启token认证if (serverConfig.useTokenAuthentication) {// 请求头携带tokenconfig.headers.Authorization localStorage.getItem(token);}return config;},(error) {// 请求发送失败的处理逻辑return Promise.reject(error);} );// 响应拦截 apiClient.interceptors.response.use((response) {// 响应数据处理逻辑比如判断token是否过期等等// 代码块return response;},(error) {// 响应数据失败的处理逻辑let message ;if (error error.response) {switch (error.response.status) {case 302:message 接口重定向了;break;case 400:message 参数不正确;break;case 401:message 您未登录或者登录已经超时请先登录;break;case 403:message 您没有权限操作;break;case 404:message 请求地址出错: ${error.response.config.url};break;case 408:message 请求超时;break;case 409:message 系统已存在相同数据;break;case 500:message 服务器内部错误;break;case 501:message 服务未实现;break;case 502:message 网关错误;break;case 503:message 服务不可用;break;case 504:message 服务暂时无法访问请稍后再试;break;case 505:message HTTP 版本不受支持;break;default:message 异常问题请联系管理员;break;}}return Promise.reject(message);} );export default apiClient;/api/index.js配置请求接口这里一个get一个post import apiClient from /libs/request;let getInfo (params) {return apiClient({url: /get,method: get,params, // axios的get请求query用params}); }; let postInfo (params) {return apiClient({url: /post,method: post,data: params, // axios的post请求body用data}); }; export default {getInfo,postInfo, };App.vue用于测试请求结果 script import api from ./api/index.js export default {data() {return {isH5: true}},created() {this.init()},methods: {init() {api.getInfo().then(res {console.log(res.data);})api.postInfo({name: zhangsan,age: 18}).then(res {console.log(res.data);})}}, } /script结果如下 4. 总结 总结一部分区别如下【这三个东西差别真的很大】 Ajaxfetchaxios类型术语技术的统称js内置的api第三方库是否使用xhr二次封装是否是是否返回Promise否是是
http://www.w-s-a.com/news/668750/

相关文章:

  • 网站设计有限公司怎么样网站建设西班牙语
  • 网站安全解决方案宁波seo网络推广优化价格
  • 做网站带来好处wordpress可以做oa系统吗
  • 建筑设计人才招聘网站h5营销型网站suteng
  • 做app和网站怎样如何做html网站
  • php开发手机端网站开发更换网站标题
  • 提供网站建设报价延津县建设局网站
  • 江苏网站建设流程土巴兔全包装修怎么样
  • 环保网站建设方案带漂浮广告的网站
  • 淘宝客合伙人网站建设建站前端模板
  • 网站单页模板怎么安装中世纪变装小说wordpress
  • 手机免费建设网站制作宝安第一网站
  • 如何做x响应式网站asp网站出现乱码
  • 网站备案的幕布是什么来的游戏推广代理
  • 固始城乡建设局的网站怎么打不开了上海建设网站
  • 关于加强网站信息建设的通知3d网站开发成本
  • 网站建设实训过程报告成品网站1688入口的功能介绍
  • 网站定制开发需要什么资质国外设计灵感网站
  • 搜搜网站收录广告设计与制作模板图片
  • 江苏省建设监理协会网站汕头网站建设方案优化
  • 中国风网站配色方案正规少儿编程排名
  • 兼职做网站的软件wordpress赞的代码
  • 销售网站的技巧四博互联做的网站
  • 网站建设 图片问题小程序免费制作平台凡科网页版
  • 猪八戒网做网站怎么样网站建设 客户同程
  • 西安网站建设那家强网站建设方案 报价
  • 销售网站建设考核指标网站建设价格组成
  • 网站302跳转网站建设完成后 下一步做什么
  • 赣州制作网站企业硬件开发用什么语言
  • 新网站如何被网站收录百度排名优化软件