分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

ajax请求的原生js实现

发布时间:2023-09-06 02:33责任编辑:郭大石关键词:js

我们使用ajax请求一般都用的jQuery, axios封装好了的api, 那么如果只能用原生js, 我们该如何操作了? 上代码.

我们在同目录下写好一个json文件(data.json)用于请求测试

 1 const ajax = function() { 2 ??var ajaxData = { 3 ????type: arguments[0].type || ‘GET‘, 4 ????url: arguments[0].url, 5 ????async: arguments[0].async || true, 6 ????data: arguments[0].data|| null, ????7 ????dataType: arguments[0].dataType || ‘json‘, ????8 ????contentType: arguments[0].contentType || ‘application/x-www-form-urlencoded‘, ??9 ????beforeSend: arguments[0].beforeSend || function(){}, 10 ????success: arguments[0].success || function(){}, 11 ????error: arguments[0].error || function(){} ?12 ??}13 ??// 执行发起请求前要执行的操作14 ??ajaxData.beforeSend();15 16 ??var xhr = createxmlHttpRequest();17 ??xhr.responseType = ajaxData.dataType;18 ??// 建立连接19 ??xhr.open(ajaxData.type, ajaxData.url, ajaxData.async);20 ??xhr.setRequestHeader(‘Content-Type‘, ajaxData.contentType);21 ??// 发送请求22 ??xhr.send(convertData(ajaxData.data));23 ??xhr.onreadystatechange = function() {24 ????if (xhr.readyState == 4) {25 ??????if (xhr.status == 200) {26 ????????ajaxData.success(xhr.response)27 ??????} else {28 ????????ajaxData.error()29 ??????}30 ????}31 ??}32 33 ??// 创建xhr对象, 兼容IE634 ??function createxmlHttpRequest() { ?35 ????if (window.ActiveXObject) { ?36 ??????return new ActiveXObject("Microsoft.XMLHTTP"); ?37 ????} else if (window.XMLHttpRequest) { ?38 ??????return new XMLHttpRequest(); ?39 ????} ?40 ??}41 42 ??// 将json格式转换成字符串43 ??function convertData(data){ 44 ????if( typeof data === ‘object‘ ){ 45 ??????var convertResult = "" ; ?46 ??????for(var c in data){ ?47 ????????convertResult+= c + "=" + data[c] + "&"; ?48 ??????} ?49 ??????convertResult = convertResult.substring(0,convertResult.length-1) 50 ??????return convertResult; 51 ????}else{ 52 ??????return data; 53 ????} 54 ??}55 ??????56 ???57 }

怎么用?

 1 ajax({ 2 ??type: ‘GET‘, 3 ??url: ‘./data.json‘, 4 ??dataType: ‘json‘, 5 ??data: {}, 6 ??beforeSend: function() { 7 ????console.log(‘我是请求前的操作‘) 8 ??}, 9 ??success: function(data) {10 ????console.log(data)11 ??},12 ??error: function() {13 ????console.log(‘请求失败‘)14 ??}15 })

ajax请求的原生js实现

原文地址:https://www.cnblogs.com/spotman/p/10392430.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved