ajax的了解

ajax的了解

虽然每天都在使用ajax,但是我发现我好像对于ajax一点都不了解,他到底是什么?我们每天都在用的jquery的封装,他就是一个黑盒子,方便但是我们却不知道他的本身。我们每天也人云亦云,然而其实我们连ajax到底是什么都不知道。今天我们就来揭开他的神秘面纱。

记得我刚学习web时,觉得很神奇,一个ajax请求就能返回一串json数据。原来我到今天才发现我错了。ajax英文叫做 asynchronous JavaScript and XML,用中文翻译就是异步的javascript和xml技术,那么我们发现我们现在用的貌似和xml没有半毛钱关系。确实,以前xml是前后台之间的数据交互形式,但是现在都是以json来传输数据,所以ajax中的xml技术不是必须的,现在基本被json取代,所以其实我们现在用的是ajaj,这就是ajax的由来。

我们在使用时都知道ajax最厉害的是异步操作,当你发送一个请求时,当没有返回时,浏览器会继续执行其他的任务,而不会挂起等待,这就是异步的好处,当然也带来一些问题。比如我之前写一个东西(忘记是什么了),要做几个ajax请求,他们之间是有先后顺序的,当时我想javascript是按顺序执行的,于是我就把它们按照顺序写下来,发现每次请求的顺序都不一样。。。现在我终于找到了答案。

原生的ajax是依赖于XMLHttpRequest 对象,在比较老的IE5 、6中是依赖于 ActiveXObject对象,所以要兼容性就这么写:

    var xhr;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xhr=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xhr=new ActiveXObject("Microsoft.XMLHTTP");
      }

下面便是发送请求:

      xhr.open('get', 'send-ajax-data.php');

    // 检测ajax的请求状态
    xhr.onreadystatechange = function () {
        var DONE = 4; // readyState 4 means the request is done.
        var OK = 200; // status 200 is a successful return.
        if (xhr.readyState === DONE) {
            if (xhr.status === OK) {
                alert(xhr.responseText); // 'This is the returned text.'
            } else {
                alert('Error: ' + xhr.status); // An error occurred during the request.
            }
        }
    };

    // 发送请求
    xhr.send(null);

在ajax中onreadystatechange会被调用五次,因为xhr.readyState会有五个值,

  • 0: 请求未初始化
  • 1: 服务器连接已建立
  • 2: 请求已接收
  • 3: 请求处理中
  • 4: 请求已完成,且响应已就绪

每一次值变化的时候,onreadystatechange就会被触发,我们也就是在其中穿插回调方法。

请求的回应可以通过xhr.responseTextxhr.responseXML获取,responseText是获取string类型的响应,responseXML是获取xml类型的响应。

到此我们对ajax也有了一个简单的认识,有种豁然开朗的感觉。在这里不得不说有时候有不明白的地方需要自己去查找答案,一切便豁然开朗。这里我推荐使用维基百科,维基百科的解释更加权威,详细。大家也可以去我的个人博客查看(http://coding.lushunming.top/或者是http://github.lushunming.top/),个人博客的排版字体更加优美。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

machineShunMing

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值