1. 程式人生 > >[JS]筆記17_AJAX1基本過程(多種適用情況)

[JS]筆記17_AJAX1基本過程(多種適用情況)

注:所有ajax請求必須在伺服器環境下執行

1、請求伺服器端的txt格式的資料

html程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax1-txt</title>
</head>
<body>
<button id="btn">請求資料</button>
<h1 id="txt"></h1>
<script>
    var
txt=document.getElementById('txt'); var btn=document.getElementById('btn'); btn.onclick=function(){ //1、建立XMLHttpRequest物件 var xhr=null;//物件型別 if (window.XMLHttpRequest) {//非IE5 6 xhr=new XMLHttpRequest();//例項物件 }else{//IE5 6 xhr=new ActiveXObject('Microsoft.XMLHTTP'
); } //2、開啟與伺服器的連結 xhr.open('get','test01.txt',true)//常用非同步--true //3、傳送給伺服器 xhr.send(null);//空或null--get請求 //4、響應就緒 xhr.onreadystatechange=function(){ if (xhr.readyState==4) {//請求完成 alert('4'); if (xhr.status==200) {//OK-->表示響應已就緒
alert('400'); txt.innerHTML=xhr.responseText; }else{ alert(xhr.status); }; }; }; }
</script> </body> </html> <!-- 1、請求伺服器端的txt格式的資料 -->

txt格式的資料:

louloloolooooo

2、請求伺服器端的json物件

json是以文字即字串的形式傳遞的,而JS操作的是JSON物件
JSON字串->json物件 

html程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax2-json物件</title>
</head>
<body>
<button id="btn">請求資料</button>
<h1 id="list"></h1>
<script>
    var list=document.getElementById('list');
    var btn=document.getElementById('btn');
    btn.onclick=function(){
        //1、建立XMLHttpRequest物件
        if (window.XMLHttpRequest) {//非IE5 6
            var xhr=new XMLHttpRequest();//例項物件
        }else{//IE5 6
            var xhr=new ActiveXObject('Microsoft.XMLHTTP');
        }
        //2、開啟與伺服器的連結
        xhr.open('get','test02.json?_='+new Date().getTime(),true)//常用非同步--true
        //?後跟傳送給伺服器的資料--->生成不一樣的url-->解決快取問題

        //3、傳送給伺服器
        xhr.send(null);//空或null--get請求
        //4、響應就緒
        xhr.onreadystatechange=function(){
            if (xhr.readyState==4) {//請求完成
                if (xhr.status==200) {//OK-->表示響應已就緒
                    var json=JSON.parse(xhr.responseText);//解析成json物件
                    for (var i = 0; i < json.name.length; i++) {
                        list.innerHTML+='<li>姓名:'+json.name[i]+',  性別:'+json.sex[i]+', 年齡:'+json.age[i]+'  ,成績:'+json.scroe[i]+'</li>';
                    }
                }else{
                    alert(xhr.status);
                };
            };
        };
    }
</script>
</body>
</html>

json物件格式的資料:

{
    "name":["小嘍","安靜","老二","佳佳"],
    "sex":["女","女","男","男"],
    "age":[19,23,34,21],
    "scroe":[100,77,33,90]
}

這裡寫圖片描述

3、請求伺服器端的json陣列

html程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax3-json陣列</title>
</head>
<body>
<button id="btn">請求資料</button>
<h1 id="list"></h1>
<script>
    var list=document.getElementById('list');
    var btn=document.getElementById('btn');
    btn.onclick=function(){
        //1、建立XMLHttpRequest物件
        if (window.XMLHttpRequest) {//非IE5 6
            var xhr=new XMLHttpRequest();//例項物件
        }else{//IE5 6
            var xhr=new ActiveXObject('Microsoft.XMLHTTP');
        }
        //2、開啟與伺服器的連結
        xhr.open('get','test03.json?_='+new Date().getTime(),true)//常用非同步--true
        //3、傳送給伺服器
        xhr.send(null);//空或null--get請求
        //4、響應就緒
        xhr.onreadystatechange=function(){
            if (xhr.readyState==4) {//請求完成
                if (xhr.status==200) {//OK-->表示響應已就緒
                    var json=JSON.parse(xhr.responseText);//解析成json物件
                    for (var i = 0; i < json.length; i++) {
                        list.innerHTML+='<li>姓名:'+json[i].name+',  性別:'+json[i].sex+', 年齡:'+json[i].age+'  ,成績:'+json[i].scroe+'</li>';
                    }
                }else{
                    alert(xhr.status);
                };
            };
        };
    }
</script>
</body>
</html>

json陣列格式的資料:

[
    {"name":"小嘍","sex":"女","age":"19","scroe":"99"},
    {"name":"老二","sex":"男","age":"23","scroe":"77"},
    {"name":"安靜","sex":"女","age":"24","scroe":"90"},
    {"name":"佳佳","sex":"男","age":"20","scroe":"45"}
]

4、請求伺服器端的XML格式

獲取標籤元素

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax4-XML</title>
</head>
<body>
<button id="btn">請求資料</button>
<ul id="list"></ul>
<script>
    var list=document.getElementById('list');
    var btn=document.getElementById('btn');
    btn.onclick=function(){
        //1、建立XMLHttpRequest物件
        if (window.XMLHttpRequest) {//非IE5 6
            var xhr=new XMLHttpRequest();//例項物件
        }else{//IE5 6
            var xhr=new ActiveXObject('Microsoft.XMLHTTP');
        }
        //2、開啟與伺服器的連結
        xhr.open('get','test04.xml?_='+new Date().getTime(),true)//常用非同步--true
        //3、傳送給伺服器
        xhr.send(null);//空或null--get請求
        //4、響應就緒
        xhr.onreadystatechange=function(){
            if (xhr.readyState==4) {//請求完成
                if (xhr.status==200) {//OK-->表示響應已就緒
                    var xmlDoc=xhr.responseXML;//responseXML 獲得 XML 形式的響應資料
                    var names=xmlDoc.getElementsByTagName('name');
                    var sexs=xmlDoc.getElementsByTagName('sex');
                    var ages=xmlDoc.getElementsByTagName('age');
                    var score=xmlDoc.getElementsByTagName('score');
                    console.log(names);
                    for (var i = 0; i < names.length; i++) {
                        list.innerHTML+='<li>姓名:'+names[i].innerHTML+', 性別:'+sexs[i].innerHTML+', 年齡:'+ages[i].innerHTML+', 成績:'+score[i].innerHTML+'</li>';
                    }
                }else{
                    alert(xhr.status);
                };
            };
        };
    }
</script>
</body>
</html>

XML格式的資料:

<persons>
    <person>
        <name>老王</name>
        <sex></sex>
        <age>19</age>
        <score>66</score>
    </person>
    <person>
        <name>老劉</name>
        <sex></sex>
        <age>23</age>
        <score>75</score>
    </person>
    <person>
        <name>老李</name>
        <sex></sex>
        <age>24</age>
        <score>88</score>
    </person>
    <person>
        <name>老張</name>
        <sex></sex>
        <age>31</age>
        <score>94</score>
    </person>
</persons>

這裡寫圖片描述

5、請求伺服器端PHP格式資料

返回字串->需要解析
HTML程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax5-PHP</title>
</head>
<body>
<button id="btn">請求資料</button>
<h1 id="list"></h1>
<script>
    var list=document.getElementById('list');
    var btn=document.getElementById('btn');
    btn.onclick=function(){
        //1、建立XMLHttpRequest物件
        if (window.XMLHttpRequest) {//非IE5 6
            var xhr=new XMLHttpRequest();//例項物件
        }else{//IE5 6
            var xhr=new ActiveXObject('Microsoft.XMLHTTP');
        }
        //2、開啟與伺服器的連結
        xhr.open('get','test05.php?_='+new Date().getTime(),true)//常用非同步--true
        //3、傳送給伺服器
        xhr.send(null);//空或null--get請求
        //4、響應就緒
        xhr.onreadystatechange=function(){
            if (xhr.readyState==4) {//請求完成
                if (xhr.status==200) {//OK-->表示響應已就緒
                    var json=JSON.parse(xhr.responseText);//解析成json物件
                    list.innerHTML=json.name;
                }else{
                    alert(xhr.status);
                };
            };
        };
    }
</script>
</body>
</html>

XML格式的資料:

<?php
    $str='{"name":"小嘍","sex":"女","age":19,"score":66}';
    echo $str;
?>

6、請求伺服器端PHP格式資料

返回字串->不需要解析
HTML程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ajax5-PHP2</title>
</head>
<body>
<input type="text" name="" value="" id="ipt">
<button id="btn">請求資料</button>
<h1 id="txt"></h1>
<script>
    var txt=document.getElementById('txt');
    var btn=document.getElementById('btn');
    var ipt=document.getElementById('ipt');
    btn.onclick=function(){
        //1、建立XMLHttpRequest物件
        if (window.XMLHttpRequest) {//非IE5 6
            var xhr=new XMLHttpRequest();//例項物件
        }else{//IE5 6
            var xhr=new ActiveXObject('Microsoft.XMLHTTP');
        }
        //2、開啟與伺服器的連結
        xhr.open('get','test06.php?age='+ipt.value+'&_='+new Date().getTime(),true)//常用非同步--true
        //3、傳送給伺服器
        xhr.send(null);//空或null--get請求
        //4、響應就緒
        xhr.onreadystatechange=function(){
            if (xhr.readyState==4) {//請求完成
                if (xhr.status==200) {//OK-->表示響應已就緒
                    txt.innerHTML=xhr.responseText;
                }else{
                    alert(xhr.status);
                };
            };
        };
    }
</script>
</body>
</html>

XML格式的資料:

<?php
    $str=$_GET['age'];
    switch($str){
        case '21':
            echo '小嘍';
            break;
        case '22':
            echo '小雪';
            break;
        case '23':
            echo '佳佳';
            break;
        case '24':
            echo '迪迪';
            break;
        default: 
            echo "小妖精";
            break;
    }
?>

這裡寫圖片描述