zoukankan      html  css  js  c++  java
  • js基础之ajax

    必须搞懂的几个问题:

    1.如何创建ajax对象?

    2.如何连接服务器?

    3.如何发送请求?

    4.监控请求状态的事件是什么?分几个阶段?如何获取返回值?

    答:onreadystatechange事件:一、readyState属性(请求状态:0——>未初始化;1——>载入,已经调用send()方法;2——>载入完成,已收到相应内容;3——>正在解析内容;4——>完成);二、status属性(请求结果);三、responseText属性(取得结果)

    一、读取服务器端文件

    function ajax(url, fnSucc, fnFaild){
      //1.创建Ajax对象
      var oAjax=null;

      if(window.XMLHttpRequest){
        oAjax=new XMLHttpRequest();
      }else{
        oAjax=new ActiveXObject("Microsoft.XMLHTTP");
      }
      //2.连接服务器
      oAjax.open('GET', url, true);
      //3.发送请求
      oAjax.send();
      //4.接收服务器的返回
      oAjax.onreadystatechange=function (){
        if(oAjax.readyState==4) //完成
        {
          if(oAjax.status==200) //成功
          {
            fnSucc(oAjax.responseText);
          }else{
            if(fnFaild)
            fnFaild(oAjax.status);
          }
        }
      };
    }
    window.onload=function(){
    var oBtn=document.getElementById('btn1');

    oBtn.onclick=function(){
      ajax('abc.txt?t='+Math.random(),function(str){
      //alert(str);//'[1,2,3]'
      //alert(eval(str)[0]);//1,eval可以解析任何js代码,比如把'[1,2,3]'解析成数组
      var arr=eval(str);
      alert(arr[0].rank);//把json文件解析成数组
      });
    }
    }

    二、分页

    var oUl = document.getElementById('ul1');
    var oBtn=document.getElementById('btn1');
    var aBtn=document.getElementsByClassName('a');
    var i=0;

    for(i=0;i<aBtn.length;i++){
      aBtn[i].index=i;//设置索引
      aBtn[i].onclick=function(){
        ajax('p'+(this.index+1)+'.txt',function(str){
          var aData=eval(str);

          oUl.innerHTML='';//循环前清空ul内的内容,否则会累加显示
          for(i=0;i<aData.length;i++){
            var oLi=document.createElement('li');
            oLi.innerHTML='<b>'+aData[i].name+'</b><i>'+aData[i].rank+'</i>';
            oUl.appendChild(oLi);
          }
        });
      }
    }

    三、编写自己的ajax库

    function ajax(url, fnSucc, fnFaild){
      //1.创建Ajax对象
      var oAjax=null;

      if(window.XMLHttpRequest){
        oAjax=new XMLHttpRequest();
      }else{
        oAjax=new ActiveXObject("Microsoft.XMLHTTP");
      }
      //2.连接服务器
      oAjax.open('GET', url, true);
      //3.发送请求
      oAjax.send();
      //4.接收服务器的返回
      oAjax.onreadystatechange=function (){
        if(oAjax.readyState==4) //完成
        {
          if(oAjax.status==200) //成功
          {
            fnSucc(oAjax.responseText);
          }else{
            if(fnFaild)
            fnFaild(oAjax.status);
          }
        }
      };
    }


    作者:狂流
    出处:http://www.cnblogs.com/kuangliu/
    欢迎转载,分享快乐! 如果觉得这篇文章对你有用,请抖抖小手,推荐一下!

  • 相关阅读:
    IOS上传图片方向问题
    在线抠图的小工具
    Notion笔记工具免费开通教育许可
    多国正在遭遇新型勒索病毒Petya侵袭
    UC 网盘:我又回来了
    数字统计
    Hello,World!
    Unity开发笔记-Timeline利用Clip实现Rewind回放
    Unity开发笔记-Timeline利用Single实现Rewind回放
    Unity开发笔记-PSD自动导出UGUI工具开发要点记录(1)PSD树形结构解析
  • 原文地址:https://www.cnblogs.com/kuangliu/p/3478850.html
Copyright © 2011-2022 走看看