博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax(下)
阅读量:3923 次
发布时间:2019-05-23

本文共 3186 字,大约阅读时间需要 10 分钟。

主要内容

ajax的封装

内附详细注释

function $ajax(obj) {
function objtostring(obj) {
//判断传入的值是否为对象 if (Object.prototype.toString.call(obj).slice(8, -1) === "Object") {
let arr = [] for (var atter in obj) {
arr.push(atter + "=" + obj[atter]); } return arr.join("&"); } else {
throw new Error("你输入的不是一个纯碎的对象"); } } let ajax = new XMLHttpRequest(); //1.默认get请求,此参数可以省略。 obj.type = obj.type || "get"; //2.接口地址不能为空 if (!obj.url) {
throw new Error("接口地址有误!"); } //3.发送数据get和post的兼容问题 if (obj.date) {
//判断数据是否存在,同时判断数据是否是对象 if (Object.prototype.toString.call(obj.date).slice(8, -1)) {
obj.date = objtostring(obj.date); } else {
obj.date = obj.date; } } //4.数据存在,get传输数据方式? if (obj.date && obj.type === "get") {
obj.url += "?" + obj.date; } //6.是否异步,如果同步的话,无需进行onreadystatechange事件监听。 if (obj.async === "false" || obj.async === false) {
obj.async = false; } else {
obj.async = true; } ajax.open(obj.type, obj.url, obj.async); //5.数据存在,post方式传输数据? if (obj.date && obj.type === "post") {
ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded"); ajax.send(obj.date); } else {
ajax.send();//发送解析 } //7.同步和异步的判断方法 //8.获取接口数据 //想办法把获取接口数据传出去,不能将处理数据的过程放到函数内部 //在函数调用中操作数据,必须在函数调用中获取数据 if (obj.async) {
//异步 ajax.onreadystatechange = function () {
if (ajax.readyState === 4) {
if (ajax.status === 200) {
obj.success && typeof obj.success === "function" && obj.success(ajax.responseText); //console.log(ajax.responseText); } else {
//接口错误! obj.error && typeof obj.error === "function" && obj.error("异步——接口地址有误" + ajax.status); } } } } else {
//同步 if (ajax.status === 200) {
//console.log(ajax.responseText); obj.success && typeof obj.success === "function" && obj.success(ajax.responseText); } else {
//接口错误! //throw new Error("接口地址有误" + ajax.status); obj.error && typeof obj.error === "function" && obj.error("同步——接口地址有误" + ajax.status); } } } //对象做参数: //对象是无序的,顺序可变的。 //如果直接在函数单个设置参数:顺序不能乱。 $ajax({
type: "get",//请求方式(类型) url: "http://localhost/NZ-1903/0303/13conn.php1", date: {
//传输的数据,默认没有数据 a: 4, b: 5, c: 6 }, async: true,//是否异步 , 默认异步! 值不是false就是true success: function (str) {
//请求成功的回调函数, str:数据,随意对数据进行操作。 console.log(str); }, error: function (err) {
//请求失败的回调函数 err:失败的错误信息 throw new Error(err); } })

转载地址:http://kgkgn.baihongyu.com/

你可能感兴趣的文章
.NET应用程序安全操作概述
查看>>
C# WPF:把文件给我拖进来!!!
查看>>
生态和能力是国内自研操作系统发展的关键
查看>>
银河麒麟V10入选2020中国十大科技新闻
查看>>
Amazing 2020
查看>>
代码改变世界,也改变了我
查看>>
2021,未来可期
查看>>
阿星Plus:基于abp vNext开源一个博客网站
查看>>
写给自己,2020的年终总结
查看>>
Flash 生命终止,HTML5能否完美替代?
查看>>
ML.NET生成器带来了许多错误修复和增强功能以及新功能
查看>>
微信适配国产操作系统:原生支持 Linux
查看>>
我的2020年终总结:新的角色,新的开始
查看>>
C# 9 新特性 —— 增强的模式匹配
查看>>
ASP.NET Core Controller与IOC的羁绊
查看>>
如何实现 ASP.NET Core WebApi 的版本化
查看>>
探索 .Net Core 的 SourceLink
查看>>
AgileConfig-如何使用AgileConfig.Client读取配置
查看>>
【gRPC】 在.Net core中使用gRPC
查看>>
整合.NET WebAPI和 Vuejs——在.NET单体应用中使用 Vuejs 和 ElementUI
查看>>