AJAX

AJAX (Asynchronous JavaScript and XML)是异步的 JavaScript 和 XML。

主要功能是在无需重新加载整个网页的情况下,使用 XMLHttpRequest 和服务器进行异步通讯,能够更新部分网页的技术。

JS 原生 JQuery

工作流程:创建 XMLHttpRequest 对象、然后连接服务器、发送请求、接受服务器返回的数据。

XMLHttpRequest 对象

创建 XMLHttpRequest 对象:如果是 IE5 或者 IE6 浏览器,则使用 ActiveX 对象

  • var xmlHttp;
    if (window.XMLHttpRequest) {            //非IE
        xmlHttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {       //IE
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
    }
    

open(method,url,async) : 建立前端到服务器的请求,有三个参数:

  • 第一个参数定义发送请求所使用的方式(get/post);
  • 第二个参数设置文件在服务器端的位置 URL;
  • 第三个参数设置是否对请求进行异步处理(true 异步 / false 同步)。

send(content) :向服务器发送请求;当请求方式为 post 时需要设置参数;请求参数为 get 时不用设置参数

  • xmlHttp.send();

readyState 属性:该属性代表着当前 xmlHttpRequest 的状态,每当 readystate 状态改变的时候,就会调用 onreadystatechange() 函数

  • 0:请求未初始化(调用 open() 之前)
  • 1:请求已经建立但是还没有发出 (调用 send() 之前)
  • 2:请求已经发出
  • 3:请求正在处理当中
  • 4:请求已经被服务器处理完毕,相应准备就绪

回调函数:实现的功能就是接收后台处理后反馈给前台的数据,判断后台返回的信息是否正确,然后将数据显示到指定的 div 上。

  • xmlHttp.onreadystatechange = function() {
      if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
        var obj = document.getElementById("test");
        obj.innerHTML = xmlHttp.responseText;
      } else {
        alert("AJAX服务器返回错误!");
      }
    }
    

JQuery AJAX

$.ajax()

$.ajax({
  type:"post",  // 请求方式
  url:"getResource",  // 服务器的链接地址
  dataType:"json", // 传送和接受数据的格式
  data:{
    para1:"value1",
    para1:"value2"
  },
  success:function(data){ // 接受数据成功时调用的函数
  console.log(data);    // data为服务器返回的数据
  },
  error:function(request){// 请求数据失败时调用的函数
    alert("发生错误:"+request.status);
  }
});

$.get() 和 $.post()

提供两种简化的函数方式。

$.get(url,[data],[callback],[dataType])

$.post(url,[data],[callback],[dataType])