AJAX

作者: osoLife | 来源:发表于2017-06-27 20:19 被阅读0次

    同步&异步

    • 同步:同一个时间点允许执行多个进程
    • 异步:同一个时间点只允许执行一个进程

    案例一

    <h1>接收/处理JSON信息</h1>
    <input type="button" name="" value="获取天气信息" onclick="getWeather()">
    
    function getWeather(){
           var xhr=new XMLHttpRequest();
           // console.log(xhr);
           xhr.onreadystatechange=function() {
               if(xhr.readyState==4 && xhr.status==200){
                    // 通过eval()把接收的JSON字符串变成真实的对象信息
                    eval("var info="+xhr.responseText);
                    console.log(info);
                    console.log(info.city);
               }
            }
            xhr.open('get','test.php',true);
            xhr.send(null);      
    }
    
    <?php
       echo '{"city":"重庆","temp":"28","date":"2017年6月27日 星期二"}';
    ?>
    

    案例二

    <h1>校验用户名(get)</h1>
    <p>用户名:<input type="text" id="username" onblur="checkName()"></p>
    
    function checkName(){
         var un=document.getElementById('username').value;
         // GET方式:需对传递的特殊符号(如:&、=)或中文进行编码处理
         un=encodeURIComponent(un);
         var xhr=new XMLHttpRequest();
         xhr.onreadystatechange=function() {
             if(xhr.readyState==4 && xhr.status==200){
                alert(xhr.responseText);
             }
         }
         xhr.open('get','test.php?name='+un,true);
         xhr.send(null);      
    }
    
    <?php
        print_r($_GET);
    ?>
    

    案例三

    <h1>校验用户名(post)</h1>
    <p>用户名:<input type="text" id="username" onblur="checkName()"></p>
    
    function checkName(){
          var un=document.getElementById('username').value;
          // POST:传递的中文信息无需编码,特殊符号仍需编码
          un=encodeURIComponent(un);
          var info="name="+un; 
          var xhr=new XMLHttpRequest();
          xhr.onreadystatechange=function() {
              if(xhr.readyState==4 && xhr.status==200){
                 alert(xhr.responseText);
              }
          }
          xhr.open('post','test.php',true);
          xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
          xhr.send(info);      
    }
    
    <?php
        print_r($_POST);
    ?>
    

    案例四

    传统分页效果:连接数据库、获得数据、分页显示
    http://网址/data.php?page=1
    http://网址/data.php?page=2
    http://网址/data.php?page=3
    xhr.open('get','data.php?page=3',true);
    

    缓存

    浏览器对动态程序文件缓存的处理解决:
    1.给请求的地址设置随机数(保证每次请求的地址都不一样)【推荐】;
    xhr.open('get','test.php?'+Math.random(),true);
    2.给动态程序设置header头信息,静止浏览器对其缓存。
    header()
    

    结束语

    如果喜欢本文,记得点赞并加关注哟。

    相关文章

      网友评论

        本文标题:AJAX

        本文链接:https://www.haomeiwen.com/subject/mmzecxtx.html