//原生js写ajax就像打电话

//打电话分下面4步
//1.拿出手机
//2.拨号
//3.说话
//4.听对方说话

//ajax也分下面4步
//1.创建ajax对象
//2.连接到服务器
//3.发送请求(告诉服务器我要什么文件)
//4.接收返回值

原生js写ajax的具体写法

  1. <script>
  2. window.onload=function()
  3. {
  4. var oBtn = document.getElementById("btn1");
  5. oBtn.onclick = function()
  6. {
  7. //1.创建ajax对象
  8. //只兼容非ie6的浏览器,在ie6浏览器上运行会提示没有被定义
  9. //var oAjax = new XMLHttpRequest();//这才是ajax实际的请求
  10. //alert(oAjax);
  11.  
  12. //ie6浏览器下按照下面方法写,但是在别的浏览器中不能用,会报错。
  13. //var oAjax = new ActiveXObject("Microsoft.XMLHTTP");
  14. //alert(oAjax);
  15.  
  16. //鉴于上面出现的问题,可以采取下面的方法解决,用if判断是否为IE6浏览器
  17. if(window.XMLHttpRequest)//如果有XMLHttpRequest,那就是非IE6浏览器。()里面加window的原因下面会有描述。
  18. {
  19. var oAjax = new XMLHttpRequest();//创建ajax对象
  20. }
  21. else//如果没有XMLHttpRequest,那就是IE6浏览器
  22. {
  23. var oAjax = new ActiveXObject("Microsoft.XMLHTTP");//IE6浏览器创建ajax对象
  24. }
  25.  
  26. //2.连接服务器
  27. //open(方法、文件名、异步传输)
  28. //方法:
  29. //传输方式是get方式还是post方式。
  30. //文件名
  31. //告诉服务器要读哪个文件
  32. //异步传输
  33. //异步:多件事一件一件的做
  34. //同步:多件事情一起进行
  35. //但是js里面的同步和异步和现实的同步异步相反。
  36. //同步:多件事一件一件的做
  37. //异步:多件事情一起进行
  38. //ajax天生是用来做异步的
  39.  
  40. oAjax.open("GET","a.txt?t='+new Date().getTime()",true);//加上t='+new Date().getTime()"的目的是为了消除缓存,每次的t的值不一样。
  41.  
  42. //3.发送请求
  43. oAjax.send();
  44.  
  45. //4.接收返回
  46. //客户端和服务器端有交互的时候会调用onreadystatechange
  47. oAjax.onreadystatechange=function()
  48. {
  49. //oAjax.readyState //浏览器和服务器,进行到哪一步了。
  50. //0->(未初始化):还没有调用 open() 方法。
  51. //1->(载入):已调用 send() 方法,正在发送请求。
  52. //2->载入完成):send() 方法完成,已收到全部响应内容。
  53. //3->(解析):正在解析响应内容。
  54. //4->(完成):响应内容解析完成,可以在客户端调用。
  55. if(oAjax.readyState==4)
  56. {
  57. if(oAjax.status==200)//判断是否成功,如果是200,就代表成功
  58. {
  59. alert("成功"+oAjax.responseText);//读取a.txt文件成功就弹出成功。后面加上oAjax.responseText会输出a.txt文本的内容
  60. }
  61. else
  62. {
  63. alert("失败");
  64. }
  65. }
  66. };
  67. }
  68. };
  69.  
  70. /*//上面if里面需要些window的原因
  71. //js里面的变量和属性
  72.  
  73. var a = 12;
  74. alert(a);//页面上弹出12很正常,而实际上输出的是下面的写法,是属于window的,只是window能省就省了。
  75. alert(window.a);//输出结果是一样的
  76. window.alert(window.a);
  77.  
  78. //想a这种全局变量实际上是winow的一个属性。
  79. //如果不定义一个变量a直接像下面那样输出a
  80. alert(a)//系统会报错,而不是undefind,因为没有定义变量a。
  81. alert(window.a);//如果是这样写,系统就不会报错了,会显示undefind。
  82.  
  83. //出现上面的原因是因为直接写a从根上就找不到a,而前面加上window只是找不到window的属性a了。*/
  84.  
  85. </script>

但是,不能每次用ajax的时候都写那么多代码,要把这段ajax代码封装起来,方便使用。

封装ajax

  1. //最后把代码封装起来,封装起来以后,要给这个函数加上一个参数url.参数是为了替换要读取的文件名
  2. function ajax(url,fnSucc)
  3. {
  4. if(window.XMLHttpRequest)
  5. {
  6. var oAjax = new XMLHttpRequest();
  7. }
  8. else
  9. {
  10. var oAjax = new ActiveXObject("Microsoft.XMLHTTP");//IE6浏览器创建ajax对象
  11. }
  12. oAjax.open("GET",url,true);//把要读取的参数的传过来。
  13. oAjax.send();
  14. oAjax.onreadystatechange=function()
  15. {
  16. if(oAjax.readyState==4)
  17. {
  18. if(oAjax.status==200)
  19. {
  20. fnSucc(oAjax.responseText);//成功的时候调用这个方法
  21. }
  22. else
  23. {
  24. if(fnfiled)
  25. {
  26. fnField(oAjax.status);
  27. }
  28. }
  29. }
  30. };
  31. }

将封装的ajax调用

  1. <script src="new_ajax.js"></script>//引用封装的ajax文件
  2. <script>
  3. window.onload=function()
  4. {
  5. var oBtn = document.getElementById("btn1");
  6. oBtn.onclick = function()
  7. {
  8. ajax('a.txt',function(str){//读取a.txt文件里面的内容
  9. alert(str);//将读取的内容输出
  10. })
  11. }
  12. };
  13.  
  14. </script>

用原生JavaScript写AJAX的更多相关文章

  1. 原生JavaScript写AJAX

    前端JavaScript: function ajaxGet(url, obj) { var request; if(window.XMLHttpRequest) { request = new XM ...

  2. 原生 JavaScript 实现 AJAX、JSONP

    相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的 ...

  3. 原生JavaScript 封装ajax

    原生JavaScript 封装ajax   function myajax(options){ //新建一个局部对象 用来存放用户输入的各种参数 var opt={ type:options.type ...

  4. 原生JavaScript实现AJAX、JSONP

    相信大多数前端开发者在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的 ...

  5. 原生js写Ajax

    //原生js写ajax就像打电话 //打电话分下面4步//1.拿出手机//2.拨号//3.说话//4.挺对方说话 //ajax也分下面4步//1.创建ajax对象//2.连接到服务器//3.发送请求( ...

  6. 原生javaScript完成Ajax请求

    使用原生javaScript完成Ajax请求,首先应该创建一个对象XMLHttprequest,考虑到兼容低版本IE浏览器,使用ActiveXObject对象,代码入下: var request; i ...

  7. 原生javascript写的侧栏跟随效果

    浏览网站时经常看到有的网站上,当一个页面很长的时候,设定侧栏内容会跟随滚动条滚动,我们把这种效果叫做“侧栏跟随滚动”.这种特效对提高网站浏览量.文章点击率.广告点击量都有一定效果. 侧栏跟随滚动的实现 ...

  8. 原生javascript写自己的运动库(匀速运动篇)

    网上有很多JavaScript的运动库,这里和大家分享一下用原生JavaScript一步一步写一个运动函数的过程,如读者有更好的建议欢迎联系作者帮助优化完善代码.这个运动函数完成后,就可以用这个运动函 ...

  9. 使用原生js写ajax

    // 使用原生js 封装ajax // 兼容xhr对象 function createXHR(){ if(typeof XMLHttpRequest != "undefined") ...

随机推荐

  1. Grunt、Gulp和Webpack对比

    1.Grunt处理Sass转换成CSS过程 2.Gulp处理Sass转换成CSS过程 3.Webpack执行原理 4.区别 (1)grunt和gulp都类似于webapck的中的scripts,属于任 ...

  2. 元素高度、宽度获取 style currentStyle getComputedStyle getBoundingClientRect

    1.示例代码 (1)html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  3. Linux文件的软链接和硬链接

    1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link).还有一种被称为符号链接(Symbolic Link).默认情况下.ln命令产生硬链接. 1.1索引节点 索引节点是 ...

  4. linux C++ 莫名奇异的段错误(segmentation fault),无法调用其他函数

    进来在linux下开发C++项目,遇到了非常奇怪的bug. 项目须要多线程实现,在写好代码后,每当执行到线程函数内部,当内部调用其他函数如printf.fopen等时就会提示段错误(segmentat ...

  5. 〖Linux〗Ubuntu14.04安装32位运行库

    在终端操作: sudo dpkg --add-architecture i386 echo "deb http://old-releases.ubuntu.com/ubuntu/ rarin ...

  6. 【php+微擎】微擎学习相关帮助推荐

    我刚接触微擎没多久,学习中遇到很多问题,走过很多弯路.遇到很多问题在网上也查不到,因此想把我自己的学习历程写出来供新手们参考(本人还是菜鸟一枚,文中错误之处,敬请指正!) 我以一个新手小白的角度来帮助 ...

  7. 有效利用番茄工作法提高效率--XorTime的使用方法

      之前下载过番茄工作法XorTime,但是一直不知道怎么用,我想很多朋友应该也会遇到这种情况,于是我通过网上查找并直接总结,把XorTime的使用方法给写下,希望能够帮到更多的朋友..        ...

  8. 【CAS单点登录视频教程】 第02集 -- 安装CAS

    目录 ----------------------------------------- [CAS单点登录视频教程] 第06集[完] -- Cas认证 学习 票据认证FormsAuthenticati ...

  9. Dockerfile 构建后端springboot应用并用shell脚本实现jenkins自动构建

    Dockerfile 文件构建docker镜像 FROM centos MAINTAINER zh*****eng "z*******ch.cn" ENV LANG en_US.U ...

  10. git的几个操作

    git reference https://git-scm.com/docs 克隆 从远程仓库克隆一个项目到本地文件夹,命令如下:$ git clone https://github.com/libg ...