web前端Web前端之路让前端飞

AJAX基础

2017-09-07  本文已影响95人  nanamii

AJAX(Asynchronous Javascript And XML)

概念:无需加载整个网页就可更新部分网页的技术

  • 运用HTML和CSS来实现页面,表达信息;
  • 运用XMLHttpRequest和web服务器进行数据的异步交换 ;
  • 运用JavaScript操作DOM,实现动态局部刷新。
XMLHttpRequest
  • XMLHttpRequest对象创建
    var request;
    if(window.XMLHttpRequest){
    request = new XMLHttpRequest();//IE7+,Firefox,Chrome,Opera,Safari
    }else{
    request = new ActiveXObject("Microsoft.XMLHTTP");//兼容IE5,IE6
  • XMLHttpRequest发送请求
    open(method,url,async) (async默认为true,异步)
    send(string)(GET请求可不填写,POST请求一定要填写
    setRequestHeader方法要写在open和send之间,否则会抛出异常。)
    request.open("POST","create.php",true);//POST方法
    request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    request.send("name=李二狗&sex=女");
  • XMLHttpRequest取得响应
    • requestText:获得字符串形式的响应数据
      requestXML:获得XML形式的响应数据
      status和statusText:以数字和文本形式返回HTTP状态码
      getAllResponseHeader():获取所有的响应报头
      getResponseHeader():查询响应中的某个字段的值
    • readyState属性
      0:请求未初始化,open还没有调用。
      1:服务器连接已经建立,open已经调用了。
      2:请求已接受,也就是接收到头信息了。
      3:请求处理中,也就是接收到响应主体了。
      4:请求已完成,且响应已就绪,也就是响应完成了。
    • onreadystatechange事件监听
      var request = new XMLHttpRequest();
      request.open("GET","get.php",true);
      request.send
      request.onreadystatechange = function(){
      if(request.readyState === 4){
      if(request.status === 200)}
      document.getElementById("searchResult").innerHTML = request.responseText
      }else {
      alter("发生错误" + request.status);} }
HTTP
  • 概念
    HTTP是计算机通过网络进行通信的规则,是一种无状态协议。(不建立持久的连接,也就是服务端不保留连接的相关信息)
  • 步骤
    1.建立TCP连接
    2.Web浏览器向Web服务器发送请求命令
    3.Web浏览器发送请求头信息
    4.Web服务器应答
    5.Web服务器发送应答头信息
    6.Web服务器想浏览器发送数据
    7.Web服务器关闭TCP连接
  • HTTP请求的组成部分
    1.HTTP请求的方法或动作(GETPOST请求)
    2.正在请求的URL
    3.请求头(客户端环境信息,身份验证信息等)
    4.请求体(客户提交的查询字符串信息,表单信息等)
    GET:信息获取、使用URL传递参数**(发送信息的数量一般限制在2000个字符)
    POST:修改服务器上的资源(对发送信息数量无限制)
  • HTTP响应的组成部分
    1.数字和文字组成的状态码(用来显示请求成功还是失败)
    2.响应头(服务器类型、日期时间、内容类型和长度等)
    3.响应体
  • 状态码
    1XX:信息类。表示收到Web浏览器请求,正在进一步的处理中。
    2XX:成功。表示用户请求被正确接收。(200 OK)
    3XX:重定向,表示请求没有成功,客户必须采取进一步的动作。
    4XX:客户端错误,表示客户端提交的请求有错误。(404 NOT Found,意味着请求中引用的文档不存在。)
    5XX:服务器错误,表示服务器不能完成对请求的处理。
JSON
  • JSON:JavaScript对象表示法(JavaScript)
    1.JSON是存储和交换文本信息的语法,类似XML。它采用键值对的方式来组织,已于人们阅读和编写,同时也易于机器解析和生成。
    2.JSON是独立于语言的,什么语言都可以解析json。
  • JSON解析:eval和JSON.parse
    1.eval:不会去看JSON字符串是否合法,字符串中的一些js方法会直接执行,比较不安全。
    var jsonobj = eval( '(' + jsondata + ')' );
    2.JSON.parse:可预报json字符串中的错误。
    var jsonobj = JSON.parse(jsondata);
  • JSON校验工具
    JSONLint
JQuery中的AJAX

jQuery.ajax([settings])

  • type:类型,“POST”或"GET",默认为“GET”。
  • url:发送请求的地址。
  • data:对象,连同请求发送到服务器的数据。
  • dataType:预期服务器返回的数据类型。如果不指定,jQuery将自动根据HTTP包MIME信息来智能判断,一般我们采用json格式,可以设置为“json”
  • success:方法,请求成功后的回调函数。传入返回后的数据,以及包含成功代码的字符串。
  • error:方法,请求失败时调用此函数。传入XMLHttpRequest对象。
    $(document).ready(function(){
    $("#search").click(function(){
    $.ajax({
    type:"GET",
    url:"service.php?number=" + $("#keyword").val(),
    dataType:"json",
    success:function(data){
    if(data.success){
    $("#searchResult").html(data.msg);
    }else {
    $("#searchResult").html("出现错误:" + data.msg); }
    } ,
    error:function(jqXHR){
    alter(“发生错误:” + jqXHR.status); }
    }); });
    (POST方法多加一个data属性 data:{ })
    ($(document).ready() 与window.onload的区别)
    (http://apps.bdimg.com/libs/jquery/1.11.1/jquery.js 百度静态资源jquery库,可直接引入)
跨域(JS同源策略的限制)
  • 1.域名地址:协议 + 子域名 + 主域名 + 端口号 + 请求资源地址
    2.当协议、子域名、主域名、端口号重任意一个不相同时,都算作不同域。
    3.不同域之间相互请求资源,就算作“跨域”。
  • 处理跨域方法一:代理
  • 处理跨域方法二:JSONP
    JSONP可用于解决主流浏览器的跨域数据访问的问题。(不支持POST请求)
    前端:
    data:"jsonp"
    jsonp:"callback"
  • 处理跨域方法三:XHR2
    1.HTML5提供的XMLHttpRequest Level2已经实现了跨域访问以及其他的一些新功能。
    2.IE10以下的版本都不支持。
    3.在服务器端做一些改造即可:
    header('Access-Control-Allow-Origin:*');(*表示所有域都可以访问)
    header('Access-Control-Allow-Methods:POST,GET');
上一篇 下一篇

猜你喜欢

热点阅读