[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;
    }
?>

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值