zoukankan      html  css  js  c++  java
  • AJAX 的操作和调用

    AJAX(异步数据处理): Asynchronous (异步)的JavaScript  And  XML ( 局部刷新技术 )

      ajax能做什么:

        页面实现的效果是局部刷新,这种效果都是ajax操作的

        用户名在线监测,搜索提示等等

        无刷新分页,滚动分页加载,微博异步数据发布

        ajax聊天室

      ajax优点:

        速度快:ajax引擎缓存了重复提交的数据

        体验好

        减少了服务器和数据库的读写压力

      ajax数据处理流程:

        服务器端:  PHP+MYSQL+EMAIL(.net,java....)    m=news

        中间:xmlhttp协议

        浏览器端:JavaScript + CSS +HTML

    ajax数据处理流程:

      JavaScript 得到表单中的数据,将需要提交的数据传递给ajax引擎(xmlhttp协议的解析器)ajax引擎会缓存用户提交的数据,并且将需要提交的数据进行提交。

      数据提交服务器,服务器处理完毕后,会将数据通过xmlhttp协议对象返回到浏览器中,ajax引擎会将返回的数据和提交的数据匹配,然后缓存到ajax引擎中,然后js从ajax引擎中获取数据.

      数据第二次提交时,如果提交的数据已经提交过,ajax引擎有匹配的返回数据,那么ajax引擎则不会再向服务器提交数据,而会从ajax引擎直接将原来缓存的数据直接返回。

    ajax操作步骤:

      创建xmlhttp协议对象:

      IE: activeXobject插件 IE8上用的是FF系列的xmlhttprequest对象

      FF: xmlhttprequest对象(类)

    var http_request= false;
        if(window.XMLHttpRequest) { //FF Chrome 浏览器  
            http_request = new XMLHttpRequest(); 
        }else if (window.ActiveXObject) { // IE浏览器  IE9 以下
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");  
            } catch (es) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");  
                } catch (es) {}
            }
        }
    IETester

      设置监视句柄:监控整个的ajax数据处理流程

        readyState: 获取当前ajax的处理状态 

          不同的浏览器状态不同,有的是1,4有的是1234

          0  未创建ajax对象

          1  ajax对象创建成功,还没有准备发送的数据

          2  ajax发送的数据已经准备完毕,还没有发送

          3  ajax已经发送数据,还没有接受完数据

          4  ajax接受完毕数据

        readyState的状态数值,每更改一次,都会触发一次的onreadystatechange

        ajax对象.onreadystatechange = 方法名;

      准备发送的数据:

        ajax对象.open(“提交的方式”,”提交页面和数据”,同步/异步)

        提交方式:  GET/POST

        提交的页面和数据:

          GET: 比如  index.php?m=news&username=tom

          POST: 提交的页面

        同步/异步: true:异步   false:同步

          同步:数据一次性提交,一次性接收(多个ajax挨个提交接收)

          异步:数据一边提交,一边接收(多个ajax可能一起提交)

      发送数据:

        ajax对象.send([数据]);

        GET: send无参数

        POST: send中放置的时post提交的数据,并且提交的是字符串

      监视代码中:

        发送和接受过程中不能有错误

        ajax对象.status = 200  

        200:数据发送和接受无错误

      接受数据:

        ajax对象.responseText;     #返回的是服务器返回的数据#

     

      【user.html】  #用户名在线监测user.html  user.php    user表 pdo操作数据库# 

    <html>
        <head>
        <script>
                // ajax封装函数
            function ajax(method,url,data,asyc,success){
                // 创建xmlhttp协议对象
                var http_request= false;
                if(window.XMLHttpRequest) { //Mozilla 浏览器   
                    http_request = new XMLHttpRequest();
                }else if (window.ActiveXObject) { // IE浏览器 
                    try {   
                        http_request = new ActiveXObject("Msxml2.XMLHTTP");   
                    } catch (es) {   
                        try {   
                            http_request = new ActiveXObject("Microsoft.XMLHTTP");   
                        } catch (es) {}   
                    }   
                }
                http_request.onreadystatechange = check;
                // GET方式提交
                if(method.toUpperCase() == "GET"){
                    http_request.open(method,url+"?random="+Math.random()+"&"+data,asyc);
                    http_request.send();
                }
                // POST方式提交
                if(method.toUpperCase() == "POST"){
                    http_request.open(method,url,asyc);
                    // 设置xmlhttp请求的头信息  变量=值&变量=值
                    http_request.setRequestHeader("content-Type","application/x-www-form-urlencoded");
                    http_request.send("random="+Math.random()+"&"+data);
                }
                
                function check(){
                    if(http_request.readyState == 4 && http_request.status ==200){
                        var text = http_request.responseText;
                        
                        if(text == "1"){
                            var text = "用户名已存在";
                            var color = "red";
                        }else{
                            var text = "用户名可用";
                            var color = "green";
                        }
                        info.innerHTML = text;
                        info.style.color = color;
                    }
                }
            }
        </script>
        </head>
        <body>
        </body>
    </html>

      【user.php】

    <?php echo $_GET['uname']?>
  • 相关阅读:
    webpack debug
    linux下光标操作
    windows 下 基于express搭建 https协议的网站
    js里的null 与undefined
    scrollIntoView 前的元素滚动到浏览器窗口的可视区域内 不止垂直滚动,还有水平滚动
    js 四舍五入实现
    react 踩坑记
    String.slice
    sublime 常用插件
    springcloud 自己挖坑 @ConfigurationProperties不生效
  • 原文地址:https://www.cnblogs.com/shuo-128/p/6937281.html
Copyright © 2011-2022 走看看