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

ic手机网站开发平台赣州seo排名

ic手机网站开发平台,赣州seo排名,百度校招,好用的crm系统有哪些Promise封装原生ajax 1.node的内置模块url, http 2.Promise封装原生ajax 01-node的内置模块 # url: 操作网址 let url require(url) url.parse(网址, [布尔值: 决定是否将查询字符串转换为对象格式])#xff1a; 将网址解析成对象# http: 创建本地服务器 let http requi…Promise封装原生ajax 1.node的内置模块url, http 2.Promise封装原生ajax 01-node的内置模块 # url: 操作网址 let url require(url) url.parse(网址, [布尔值: 决定是否将查询字符串转换为对象格式]) 将网址解析成对象# http: 创建本地服务器 let http require(http)let server http.createServer(function (req, res) {// req: 前端提交的数据// res: 后端响应的内容console.log(服务器被访问了一次); }) server.listen(8888, console.log(服务器启动成功))02-Promise封装ajax【面试题】 /* 参数1. 请求地址,url: 必填2. 请求方式,method: 选填 默认get请求3. 提交的参数data: 选填 默认值 4. post的请求头 headers选填 默认值 {content-type, application/x-www-form-urlencoded}返回值 必须 返回的内容可以是回调函数, 可能会造成回调地狱 建议选择的是返回Promise可以支持async/await函数封装的方法相同部分放到函数体内不同部分传参搞定函数封装的原则尽可能的让程序的兼容性更强 参数是否齐全 参数的格式是否正确*/// 将对象转换为查询字符串 function queryStringify(data) {let str for (let key in data) {str ${key}${data[key]}}return str.slice(0, -1) }function createAjax(url) {var BaseURL urlfunction ajax(options {}) {// 这里options参数选择了对象对象可以不用考虑参数的顺序// throw new Error(): 创建一个错误信息对象并抛出显示在控制台// 1.1 请求地址是必填项if (!options.url) throw new Error(请求地址是必填项)// 1.2 请求方式 这个地方可以是undefined, 也可以是GET或POSTif (!(options.method undefined || /^(GET|POST)$/i.test(options.method))) {throw new Error(目前仅支持GET或POST敬请期待更多方式)}// 1.3 提交的参数 这个地方也可以undefined也可以是字符串也可以是对象if (!(options.data undefined || typeof options.data string || options.data.constructor Object)) {throw new Error(支持的数据类型可以是字符串或者对象)}// 1.4 post请求头可以是undefined, 也可以是表单格式提交if (/^POST$/i.test(options.method)) {if (!(options.headers undefined || options.headers[content-type] application/x-www-form-urlencoded || options.headers[content-type] application/json)) {throw new Error(post请求必须设置请求头)}}// 如果options里面的参数不包含请求方式和提交参数就要提供默认值let _default {url: BaseURL options.url,method: options.method || GET,data: options.data || ,headers: options.headers || { content-type: application/x-www-form-urlencoded }}// 提交的参数的格式可以是对象形式就需要将对象先转换成查询字符串再做拼接if (_default.data.constructor Object) _default.data queryStringify(_default.data)// 注意如果请求方式是get,并且需要携带参数就需要把参数拼接在url地址的后面if (/^GET$/i.test(_default.method) _default.data) _default.url ? _default.data// 注意发送了请求之后希望可以接收到响应的数据这里就使用了Promise, 再将结果resolve出去即可let p new Promise((resolve, reject) {// 2. 发起ajax请求// 2.1 创建一个实例对象负责发起请求和接收响应的数据let xhr new XMLHttpRequest()// 2.2 配置请求方式和请求地址xhr.open(_default.method, _default.url)// 2.3 设置请求头信息// xhr.setRequestHeader(content-type, application/x-www-form-urlencoded)if (/^POST$/i.test(_default.method)) xhr.setRequestHeader(content-type, _default.headers[content-type])// // 2.4 发送请求xhr.send(/^POST$/i.test(_default.method) _default.data)// 2.4 监听请求状态xhr.onreadystatechange function () {// 如果请求的状态码等于4 并且 http请求码等于200if (xhr.readyState 4 xhr.status 200) {let res JSON.parse(xhr.responseText)// console.log(res);resolve(res)}}})return p}return ajax }# 方法调用async function fun() {let ajax createAjax(http://115.159.153.85:8001)let r1 await ajax({url: /getTest,// method: POST,// headers: { content-type: application/json },data: {name: xdj,age: 18}})let r2 await ajax({url: /postTest,method: POST,// headers: { content-type: application/json },data: {name: r1.msg.slice(0, 3),age: 18}})} fun()
http://www.hkea.cn/news/14406944/

相关文章:

  • 免费手机小说网站建设iis搭建网站时
  • 网站建设询价公告招聘门户
  • 南昌网站关键词推广行政单位单位网站建设
  • 网站设计 北京 010什么是网络营销的主要职能之一
  • 怎么做倒计时网站电子商务网站平台建设费用
  • 开发手机网站多少钱网站开发和美工的区别
  • 安徽建设学校官方网站网站关键词密度过高
  • 多个wordpress站点互相品牌做网站
  • 网站建设项目内容搜索引擎网络排名
  • wordpress本地搭建网站a力天装饰口碑怎么样
  • 高端网站建设公司推荐html网页设计作品中国传统文化
  • 青岛市北建设集团网站crm管理是什么意思
  • 建设一个网站的费用做网站发布信息
  • 广州网站下载安装wordpress 弹窗代码
  • 株洲专业建设网站建设银行青海省分行门户网站
  • 团购网站开发语言个人备案做门户网站
  • u网站建设电子商务网站建设阶段
  • 怎样推广网站平台优化工作流程
  • dede网站名称不能中文专业电容层析成像代做网站
  • 做数学网站福州seo推广
  • 哪些网站做的海报比较高大上肖港网站开发
  • 网站标签怎么做跳转网站安全狗 拦截301
  • 模仿网站怎么做网站中怎么做下载链接
  • 幸福宝推广app网站下载餐饮品牌全案设计公司
  • 手机如何创建个人网站网站建设行业企业排名
  • wordpress 站库分离广告联盟怎么赚钱
  • 河北提供网站建设公司哪家好ai做网站
  • 瑞安 网站建设域名解析网站登录
  • 做网站需要域名 域名是啥网上写文章用什么软件
  • 网站界面设计的发展趋势合肥网站制作建设