[JS]筆記17_AJAX1基本過程(多種適用情況)
阿新 • • 發佈:2018-10-31
注:所有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;
}
?>