【JS020】原生JS实现AJAX

news/2024/11/28 3:46:44/

日期:2022年12月14日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006
如果您想了解更多有关javascript的知识,那么请点《javascript学习的奇妙之旅》


文章目录

  • 一、AJAX定义与原理
  • 二、JS实现AJAX的代码
  • 三、调用示例


一、AJAX定义与原理

百度百科AJAXAsynchronous Javascript And XML(异步JavaScript和XML)在 2005年被Jesse James Garrett提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括: HTML 或 XHTML, CSS, JavaScript, DOM, XML, XSLT, 以及最重要的XMLHttpRequest。 使用AJAX技术网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面,这使得程序能够更快地回应用户的操作。

大白话:Web的运作原理是一次HTTP请求对应一个页面,而我们需要在不重载页面的前提下,更新页面数据。那么就要用JavaScript执行异步网络请求,接收到数据后,再用JavaScript更新页面,这就是所谓的AJAX。

在这里插入图片描述

二、JS实现AJAX的代码

function ajax(paramObj, okCallBack, errCallBack) {var xhr = null;if (window.XMLHttpRequest) {xhr = new XMLHttpRequest();} else {xhr = new ActiveXObject("Microsoft.XMLHTTP");}// 判断是否支持ajaxif (xhr == null) {alert("您的浏览器不支持XMLHttp,请更新浏览器或改用其它浏览器后再使用");}// 请求类型var type = (paramObj.type || "GET").toUpperCase();// 数据类型var dataType = paramObj.dataType || "";// 请求接口var url = paramObj.url || "";// 是否异步请求var async = paramObj.async == false ? false : true;// 请求参数// 1、get  reqData = Null;// 2、post reqData应为'a=111&b=222c=asd'这种字符串格式;var reqData;if (type == "POST") {reqData = "";if (paramObj.data) {var paramData = paramObj.data;for (var name in paramData) {reqData += name + "=" + paramData[name] + "&";}reqData = reqData == "" ? "" : reqData.substring(0, reqData.length - 1)};} else {reqData = null;};// 请求接收xhr.onreadystatechange = function () {// 0:请求未处死花花// 1:服务器连接已建立// 2:请求已接收// 3:请求处理中// 4:请求已完成,且响应已就绪if (xhr.readyState == 4) {// 200:"OK"// 404:"未找到页面"if (xhr.status == 200) {okCallBack(xhr.responseText)} else {errCallBack(xhr.status);}}}// 发送请求if (type == "GET") {xhr.open("GET", url, async);} else {xhr.open("POST", url, async);xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");}xhr.send(reqData);}

三、调用示例

 ajax({url: url,type: "post",data:{"a":"xxx","b":"yyy"}}, function (res) {// console.log("res", res);// console.log(JSON.parse(res));// 成功}, function (err) {// 错误console.log(err);});

参考文章:
1、《ajax(Web数据交互方式) - 百度百科》
2、《菜鸟教程|AJAX 简介|》
3、《浅析JS中的AJAX》


版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/128314599


http://www.ppmy.cn/news/3431.html

相关文章

船东提单和货代提单差距这么大?

【船东提单和货代提单差距这么大?】 船东提单即指船公司签发的海运提单(Master B/L,又叫主单,海单,简称M单),可以签发给直接货主(此时货代不出提单),也可签发…

关于迭代器遍历及auto关键词

在使用vector容器或者字符串时,很经常会用到一些遍历操作,除了使用下标遍历之外,使用迭代器遍历也是超级方便,但是迭代器也有有一些小坑,一不注意就会编译出错,所以特意总结一下。 迭代器 迭代器很很多接口…

【发表案例】2/3区计算机视觉类SCI,3个月19天录用

2/3区计算机视觉类SCI 【期刊简介】IF:2.5-3.0,JCR2/3区,中科院4区 【检索情况】SCI 在检,正刊 【征稿领域】面向智能交通应用的物联网驱动计算机视觉技术 录用案例:3个月19天录用 2022.12.05 | Accepted 2022.11.17 | Edit…

【数据结构-JAVA】包装类 泛型

目录 1. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 一道面试题 2. 泛型 2.1 什么是泛型 3. 泛型是如何编译的 3.1 擦除机制 4. 泛型的上界 5. 泛型方法 1. 包装类 在 Java 中,由于基本类型不是继承自 Object,为了在泛型代码中可以…

Matlab里面的size函数

1,size()返回矩阵的行和列,如下var是1行3列。 var[1 2 3] var 1 2 3 >> size(var) ans 1 3 2,size()返回值可以用矩阵接收。 var[1 2 3] var 1 2 3 >> [m,n]size(var) m 1 n …

如何自学黑客?自学黑客技术需要学多久?

问题一:黑客如何学起? 答:必须从学习者的角度来看,如果你是一个已经学过编程,通晓几门语言的人那么这个答案就会和一个从没有接触过的计算机,甚至连什么叫高级语言还不知道的人有所区别的对待。 这就像是登…

抖音商家引流的正确方法,抖音商家引流脚本实操教程。

大家好我是你们的小编一辞脚本,今天给大家分享新的知识,很开心可以在CSDN平台分享知识给大家,很多伙伴看不到代码我先录制一下视频 在给大家做代码,给大家分享一下抖音商家引流脚本的知识和视频演示 不懂的小伙伴可以认真看一下&#xff0c…

TCP/IP 网络原理【TCP篇】

🎉🎉🎉写在前面: 博主主页:🌹🌹🌹戳一戳,欢迎大佬指点! 目标梦想:进大厂,立志成为一个牛掰的Java程序猿,虽然现在还是一个…