一般,大家可能都会习惯用JQuery提供的Ajax方法,但是用原生的js怎么去实现Ajax方法呢?

原生js实现Ajax方法:

var Ajax={get: function(url, fn) {// XMLHttpRequest对象用于在后台与服务器交换数据   var xhr = new XMLHttpRequest();            xhr.open('GET', url, true);xhr.onreadystatechange = function() {// readyState == 4说明请求已完成if (xhr.readyState == 4 && xhr.status == 200 || xhr.status == 304) { // 从服务器获得数据 fn.call(this, xhr.responseText); } }; xhr.send(); }, // datat应为'a=a1&b=b1'这种字符串格式,在jq里如果data为对象会自动将对象转成这种字符串格式 post: function (url, data, fn) { var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); // 添加http头,发送信息至服务器时内容编码类型 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) { fn.call(this, xhr.responseText); } }; xhr.send(data); } }

注释:

1. open(method, url, async) 方法需要三个参数:

  method:发送请求所使用的方法(GET或POST);与POST相比,GET更简单也更快,并且在大部分情况下都能用;然而,在以下情况中,请使用POST请求:

  • 无法使用缓存文件(更新服务器上的文件或数据库)
  • 向服务器发送大量数据(POST 没有数据量限制)
  • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

 url:规定服务器端脚本的 URL(该文件可以是任何类型的文件,比如 .txt 和 .xml,或者服务器脚本文件,比如 .asp 和 .php (在传回响应之前,能够在服务器上执行任务));

 async:规定应当对请求进行异步(true)或同步(false)处理;true是在等待服务器响应时执行其他脚本,当响应就绪后对响应进行处理;false是等待服务器响应再执行。

2. send() 方法可将请求送往服务器。

3. onreadystatechange:存有处理服务器响应的函数,每当 readyState 改变时,onreadystatechange 函数就会被执行。

4. readyState:存有服务器响应的状态信息。

  • 0: 请求未初始化(代理被创建,但尚未调用 open() 方法)
  • 1: 服务器连接已建立(open方法已经被调用)
  • 2: 请求已接收(send方法已经被调用,并且头部和状态已经可获得)
  • 3: 请求处理中(下载中,responseText 属性已经包含部分数据)
  • 4: 请求已完成,且响应已就绪(下载操作已完成)

5. responseText:获得字符串形式的响应数据。

6. setRequestHeader():POST传数据时,用来添加 HTTP 头,然后send(data),注意data格式;GET发送信息时直接加参数到url上就可以,比如url?a=a1&b=b1。

JQuery提供的Ajax方法:

$.ajax({url: ,type: '',dataType: '',data: {},success: function(){},error: function(){}})

转载于:https://www.cnblogs.com/zhuyan0000/p/10826117.html

原生js代码实现Ajax相关推荐

  1. php上js实现ajax请求,原生JS如何实现Ajax通过POST方式与PHP进行交互的方法

    原生JS如何实现Ajax通过POST方式与PHP进行交互的方法 发布时间:2021-04-20 11:28:22 来源:亿速云 阅读:52 作者:小新 这篇文章将为大家详细讲解有关原生JS如何实现Aj ...

  2. 原生JS中的Ajax

    所谓Ajax,就是在网页中利用 XMLHttpRequest 对象和服务器进行数据交互的方式.而我们常说的原生JS中的Ajax就是围绕XMLHttpRequest对象进行发送请求. 1.XMLHttp ...

  3. Ajax和JSON-学习笔记01【原生JS方式实现Ajax】

    Java后端 学习路线 笔记汇总表[黑马程序员] Ajax和JSON-学习笔记01[原生JS方式实现Ajax] Ajax和JSON-学习笔记02[JQuery方式实现Ajax] Ajax和JSON-学 ...

  4. 原生js代码编写钟表

    原生js代码编写钟表 利用js中的定时器编写: 直接上代码: <!DOCTYPE html> <html><head><meta charset=" ...

  5. vue如何写原生js_纯技巧向:React, Vue, Rxjs 和原生 JS 代码大乱斗

    前言 这是一篇纯技巧向的文章,跟一年多之前的<揭秘Vue-3.0最具潜力的API>一样[0],更少的背景铺垫,更多的代码,更多的 demo,更快的节奏. 让我们直接进入主题. 背景 前一阵 ...

  6. 使用原生JS封装一个Ajax

    原生的Ajax写起来比较麻烦,而且每次使用的时候都得从头开始写,导致了很多不必要的工作量,产生了大量的冗余代码.这里就可以封装一个Ajax,以供以后的开发中进行使用. 首先,要想封装一个Ajax,就得 ...

  7. html制作日历备忘录,原生JS代码制作带记事备忘功能的双月份显示效果的日历

    原生JS写的日历月历 - demo by js.alixixi.com window.onload = function(){ function $(id){return typeof id === ...

  8. ajax异步处理代码实现,原生JS代码实现一个Ajax异步请求

    异步加载的方式 (1) defer,只支持IE (2) async: (3) 创建script,插入到DOM中,加载完毕后callBack 实现ajax之前必须要创建一个 XMLHttpRequest ...

  9. 原生 js 拦截所有ajax请求 可用于油猴子

    需要把所有ajax请求中的header取出来 所以写了如下代码 chrome测试通过 <!DOCTYPE html> <html lang="en"> &l ...

  10. 原生js代码实现图片放大境效果

    hello 大家好! 这是我的第一篇博客文章,感谢大家前来阅读,希望我们都能在这个平台上相互交流.共同进步.查漏补缺. 今天我给大家分享一下自己用js写的一个图片放大器效果,我做了两种效果的放大,其实 ...

最新文章

  1. vc遍历网页表单并自动填写提交
  2. Oozie基于Hue全流程调度
  3. python 运算符 (算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符、运算符优先级)(与或非)(异或)
  4. IntelliJ IDEA 部署Tomcat及创建一个web工程
  5. 超级详细的教程 一步步教你Vue项目中使用axios如何进行参数拼接
  6. PLSQL个性化设置
  7. 计算机关机键消失了,如何解决Windows7电脑中的关机键不见了
  8. Flink CDC 系列 - 构建 MySQL 和 Postgres 上的 Streaming ETL
  9. 学校管理系统C#(数据库、源码、演讲内容、ppt等)
  10. python选择哪个版本-Python学习,要选哪个版本?
  11. AutoCAD2004下载AutoCAD2004中文版安装教程
  12. 计算机上缺少vsix安装程序,vsix - Vsix安装程序在Visual Studio 2017(15.3)中失败 - 堆栈内存溢出...
  13. css中iconfont图标旋转
  14. 字节跳动前端开发面试题总结,需要的小伙伴来看!
  15. docker启动镜像命令
  16. python+opencv实现相似图片的搜索
  17. 从自媒体人到服务商 职业信鸽主播的快手商业之路
  18. element-plus小demo
  19. 苹果开发者账号Apple ID如何进行资料修改?
  20. pygame创建透明背景

热门文章

  1. Smart Link与Monitor Link技术
  2. leetcode 14 最长公共前缀(python)
  3. leetcode 13 13. 罗马数字转整数 (python)
  4. 集成源码深度剖析:Fescar x Spring Cloud 1
  5. 【Xamarin.iOS】使用iOS 11进行大型游戏
  6. BGPVRP5.0的10条选路原则,以及NE20的IBGP负载均衡
  7. php autoload 性能,PHP __autoload()方法真的影响性能吗?
  8. 移动**21*设置无法接通_手机通话质量不好?你可能只差一步设置!
  9. android wheel控件滚动,android 滚动选择插件 android-wheel
  10. Python中函数的用法