Web 前端开发 让前端飞

AJAX

2017-06-27  本文已影响0人  osoLife

同步&异步

案例一

<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()

结束语

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

上一篇下一篇

猜你喜欢

热点阅读