• Ajax 异步交互


    六、  Ajax

    1.  什么是 Ajax?

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

    1.2  AJAX 是一种与服务器交换数据时,在不重新加载整个页面的情况下实现网页的部分更新的技术

    2.  深度解析 Ajax 的工作原理

    2.1  Ajax 的核心: XMLHttpRequest 对象(),用于和服务器交换数据

    //创建 Ajax 引擎对象
        function getAjax(){
            var ajax;
            if(window.XMLHttpRequest){    // IE7+, Firefox, Chrome, Opera, Safari
                ajax = new XMLHttpRequest();
            }else if(window.ActiveXObject){   // IE6, IE5
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
            }
            return ajax;
        }

     

    2.2  复写 XMLHttpRequest 对象的 onreadystatechange 函数

    使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性获得来自服务器的响应

    如果服务器返回数据是从表中获取,为了方便客户端操作返回的数据,服务器端返回的数据设置成 Json 数据格式

    // Json对象
    {"key":value,"key":value,...}
    // Json数组
    [{"key":value,"key":value},{"key":value},...]
    //复写 onreadystatechange 函数
            ajax.onreadystatechange = function(){
                //判断 Ajax 状态码(readyState)
                if(ajax.readyState==4){
                    //判断响应状态码(status)
                    if(ajax.status==200){
                        deal200||deal200(ajax);// ajax.responseText; / ajax.responseXML;
                    }else if(ajax.status==404){
                        deal404||deal404();
                    }else if(ajax.status==500){
                        deal500||deal500();
                    }
                }
            };

     

    2.3  使用 XMLHttpRequest 对象的 open() 和 send() 方法,向服务器发送请求

    与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。然而,在以下情况中,请使用 POST 请求:

    • 无法使用缓存文件(更新服务器上的文件或数据库)
    • 向服务器发送大量数据(POST 没有数据量限制)
    • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
    //发送请求
            if (method=="get"){
                ajax.open(method,url+(data==null?"":"?"+data),async);
                ajax.send(null);
            }else if(method=="post"){
                ajax.open(method,url,async);
                ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //设置请求头信息
                ajax.send(data);
            }

    2.4  参考资料  http://www.w3school.com.cn/ajax/index.asp

    3.  JQuery 对 Ajax 的封装

    /*  第一层 $.ajax({ 属性名:值, 属性名:值 });
              JQuery 中功能最全的,代码写起来相对麻烦
              url: 请求服务器地址
              data: 请求参数
              dataType: 服务器返回数值类型
              error: 请求出错执行的功能
              success: 请求成功执行的功能,function(data) data服务器返回的数据
              type: 请求方式  */
                 
     $(function(){
        $("a").click(function(){
             $.ajax({
                url:'demo',
                data:{'name':'张三'},
                error:function(){
                       alert('请求出错')
                    },
                success:function(data){
                       alert('请求成功'+data)
                    },
                type:'POST'
             });
             return false;
        });       
     });
      
     /* 第二层 $.ajax({}); 没有错误提示,必须 F12
              $.get(url,data,success,dataType);
              $.post(url,data,success,dataType);
        
        第三层 $.get();
              $.getJSON(url,data,success);
                相当于设置了 $.get() 中的 dataType="json"
              $.getScript(url,data,success);
                相当于设置了 $.get() 中的 dataType="script"  */
    版权声明:本文为博主原创文章,转载请附上原文出处链接
  • 相关阅读:
    echart tooltip.formatter提示只显示x轴(时间)
    Install fail! Error: EBUSY: resource busy or locked
    vue v-model绑定值为obj不起作用
    浅谈JS的继承
    总结一下最近对nodejs 和 mongodb 的学习
    JavaScript30-7 数组的一些基本方法
    Vue-router 的练习
    JavaScprit30-6 学习笔记
    JavaScprit30-5 学习笔记
    JavaScript 30
  • 原文地址:https://www.cnblogs.com/IT-LFP/p/10937007.html
Copyright © 2020-2023  润新知