ajax分装过程

编程入门 行业动态 更新时间:2024-10-15 16:23:50

ajax分装<a href=https://www.elefans.com/category/jswz/34/1769466.html style=过程"/>

ajax分装过程

ajax分装过程

一 ajax原生四步

// 创建xhrHttp实例
let xhrHttp
if(window.XMLHttpRequest){//创建Ajax对象 获取浏览器内部的一个XMLHttpRequest对象,创建该对象.(非IE6)xhrHttp= new XMLHttpRequest();
}else{//ie6xhrHttp= new ActiveXObject("Microsoft.XMLHTTP");             
}// 监听请求和响应状态
xhrHttp.onreadyStatechange=function(){// 响应成功 xhrHttp.readyState 状态为4 xhrHttp.status=200if(xhrHttp.readyState==4 && xhrHttp.status==200){let responseText=xhrHttp.responseText;responseText=JSON.parse(responseText)// 进行dom操作等// ......}
}// 与服务器创建连接
let url='http://127.0.0.1:8080/v1/rols';
let type // 'get' || 'post'
// true代表支持异步执行
xhrHttp.open(type,url,true);// 发送请求
if(type==='post'){xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
}
xhrHttp.send(data) // post请求
// xhrHttp.send() // get请求

二 分装

此处分装转载
归纳了原创的代码

在utils文件夹下创建ajax.js
模拟jQuery方法封装

let $ = {ajax:function(options = {}){    //将请求的数据以对象的形式传进来var {type = "get",url="",data="",async=true,dataType="text",success}=options;//将数据解析 默认get方法请求 默认异步操作 默认文本类型text success 回调函数var xhr = new XMLHttpRequest();if(typeof data == "object"){   //优化 如果传入的data数据是对象 那么用对象的方法将他拼接起来var str = "";for(var key in data){    //for in 方法循环遍历键名str += key + "=" + data[key] + "&";       //将data数据拼接起来 但最后会有一个&符号       }data = str.substring(0,str.length-1);   // 裁剪掉最后一个字符串 也就是&}if(type=="get"){   //如果请求的方法是getif(data){     //如果存在数据 那么将数据放在URL后面xhr.open("get",url+"?"+data,async);               }else{      //如果不存在数据 那么就不添加数据          xhr.open("get",url,async);}xhr.send();}else if(type=="post"){     //如果是post请求xhr.open("post",url,async);xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");   //添加这行代码xhr.send(data);   //将已经遍历好的数据发送}xhr.onreadystatechange = function (){if(xhr.readyState==4&&xhr.status==200){var result = xhr.responseText;if(dataType == "json"){    // 如果是json数据类型  将他解析result = JSON.parse(xhr.responseText);}if(success){			// 如果存在回调函数 那么便执行这个回调函数success(result);}}}    }
}// type写在最后面的目的是可以省略不写 默认值是get 如果放在最前面 函数调用会调用URL当成type
export function request(url, params, type = "get") {return new Promise(function (resolve, reject) {$.ajax({type,url,data: {...params},dataType: "json",success: function (result) {  // result  形式参数  表示请求成功时返回的数据resolve(result);}})})
}

在api的模块化js请求接口中引入ajax.js

import {request} from '@/utils/ajax.js'
export function login(params){return request("../php/login.php", params, "post");
}

更多推荐

ajax分装过程

本文发布于:2024-03-06 08:17:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1714824.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:过程   ajax

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!