Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
代碼不是看出來的,而是敲出來的,歡迎關注WX公眾號【禿頭程序員】,收藏教程。
、為什么xml
需要服務器端返回少量的、單一的數據
用戶名是否可用 1 / 0
返回兩個數的和 400
登錄是否成功 true/false
數據插是否成功 true/false
如果我們需要從服務器端返回大量、復雜的數據,如何實現?
xml:服務器端返回xml數據
json:服務器端返回json數據
2、格式:
(1)php解析xml
$dom=new DOMDocument();
$dom->loadXML($str);
$nd=$dom->getElementsByTagName("TagName");
$value=$nd->item(0)->nodeValue
$xml=simplexml_load_string($str);
$first = $xml->first;
$second= $xml->second;
(2)js解析xml
var xml=xmlHttp.responseXML;
node=xml.getElementsByTagName("TagName");
node[0].childNodes[0].nodeValue;
3 、案例1:
實現兩個數的四則運算
HTML代碼:
<script language="javascript" src="public.js"></script>
<script>
window.onload=function(){
$('btnOk').onclick=function(){
var f=$('first').value;
var s=$('second').value;
var data='first='+f+'&second='+s;
var xhr=createxhr();
xhr.open('post','demo01.php');
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.onreadystatechange=function(){
if(xhr.readyState==4 && xhr.status==200){
//xml --->xml dom對象
var xml=xhr.responseXML;
var str=xml.getElementsByTagName('jia')[0].childNodes[0].nodeValue;
str+='|'+xml.getElementsByTagName('jian')[0].childNodes[0].nodeValue;
str+='|'+xml.getElementsByTagName('cheng')[0].childNodes[0].nodeValue;
str+='|'+xml.getElementsByTagName('chu')[0].childNodes[0].nodeValue;
$('result').innerHTML=str;
}
};
xhr.send(data);
};
};
</script>
<input type="text" id="first" /><br>
<input type="text" id='second' /><br>
<div id='result'></div>
<input type="button" id="btnOk" value="計算" />
理解:
var xml=xhr.responseXML; 得到ajax返回的xmldom對象
xml.getElementsByTagName('jia')[0] :是表示獲取jia這個元素
xml.getElementsByTagName('jia')[0].childNodes:表示獲取jia元素下的所有子節(jié)點
xml.getElementsByTagName('jia')[0].childNodes[0] :表示獲取jia元素下的唯一文本節(jié)點
xml.getElementsByTagName('jia')[0].childNodes[0].nodeValue:文本節(jié)點的值
php代碼:
<?php
$first=$_POST['first'];
$second=$_POST['second'];
$result1=$first+$second;
$result2=$first-$second;
$result3=$first*$second;
$result4=$first/$second;
//要想返回xml,首先連接一個xml格式的字符串
$str='<root>';
$str.='<jia>'.$result1.'</jia>';
$str.='<jian>'.$result2.'</jian>';
$str.='<cheng>'.$result3.'</cheng>';
$str.='<chu>'.$result4.'</chu>';
$str.='</root>';
/*$str=<<<str
<root>
<jia>$result1</jia>
</root>
str;*/
header('Content-type:text/xml');
echo $str;
理解:
得到結果后,需要使用字符串連接成一個xml格式的字符串,如:需要一個根元素,下面子元素,最后是具體的值,
連接時也可以使用<<<str創(chuàng)建xml字符串
str;
輸出這個字符串時,默認的響應內容類型:text/html,也就是說客戶端仍把代碼當做html來進行解析,
ajax對象的responeXML是不能得到一個xmldom對象,必須設置響應頭類型為:text/xml,其代碼:header('Content-type:text/xml');
public.js:
function createxhr() {
/*var xhr;
var str = window.navigator.userAgent;
if (str.indexOf('MSIE') > 0) {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} else {
xhr = new XMLHttpRequest();
}
return xhr;*/
try{return new XMLHttpRequest();}catch(e){}
try{return new ActiveXObject('Microsoft.XMLHTTP'); }catch(e){}
alert('請更換瀏覽器!');
}
function $(id){
return document.getElementById(id);
}
4、案例2
在頁面加載之后,將mysql數據庫goods表中所有數據顯示在表格中
<root>
<goods>
<name>222</name>
<price>55.00</price>
</goods>
<goods>
<name>諾 E661</name>
<price>205.00</price>
</goods>
<goods>
<name>諾 E661</name>
<price>200.00</price>
</goods>
</root>
HTML代碼:
<style>
tr{
background-color:#ffffff;
height:30px;
font-size:12px;
}
</style>
<script language="javascript" src='public.js'></script>
<script>
window.onload=function(){
var xhr=createxhr();
xhr.open('post','demo02.php');
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
xhr.onreadystatechange=function(){
if(xhr.readyState==4 && xhr.status==200)
var xml=xhr.responseXML;
var goods=xml.getElementsByTagName('goods');
for(var i=0;i<goods.length;i++){
//創(chuàng)建行元素
var tr=document.createElement('tr');
//創(chuàng)建序號td元素
var tdID=document.createElement('td');
tdID.innerHTML=i+1;
//創(chuàng)建名稱td元素
var tdName=document.createElement('td');
tdName.innerHTML=goods[i].childNodes[0].childNodes[0].nodeValue;
//創(chuàng)建價格td元素
var tdPrice=document.createElement('td');
tdPrice.innerHTML=goods[i].childNodes[1].childNodes[0].nodeValue;
//將三個td追加到tr元素
tr.appendChild(tdID);
tr.appendChild(tdName);
tr.appendChild(tdPrice);
document.getElementsByTagName('TBODY')[0].appendChild(tr);
}
};
xhr.send(null);
}
</script>
<table id='tbData' width="800" cellspacing="1" cellpadding="4" bgcolor="#336699">
<tr>
<td>序號</td>
<td>商品名稱</td>
<td>商品價格</td>
</tr>
</table>
理解:
創(chuàng)建行元素,
創(chuàng)建單元格元素
將單元格元素追加到行元素中
將行元素追加到表格元素中
php代碼:
<?php
//查詢goods表中所有數據并返回
$sql="select name,price from goods order by id desc";
mysql_connect('localhost','root','111111');
mysql_select_db('shop');
mysql_query('set names gb2312');
$result=mysql_query($sql); //發(fā)送sql語句
$num=mysql_num_rows($result); //總行數
$str='<root>';
for($i=0;$i<$num;$i++){
$row=mysql_fetch_assoc($result);
$str.='<goods>';
$str.='<name>'.iconv('gb2312','utf-8',$row['name']).'</name>';
$str.='<price>'.$row['price'].'</price>';
$str.='</goods>';
}
$str.='</root>';
header('Content-Type:text/xml');
echo $str;
?>
理解:
查詢goods表中所有數據
連接xml格式的字符串
表中有多少條數據
xml字符串就有幾對goods標簽
其中, name字段出現中文,所以需要進行轉碼 gb2312--utf-8
最后, 輸出xml字符串
基礎學習路徑
AJAX是Asynchronous javascript and xml 的縮寫,表示異步javascript 和 xml ,是一種交互式網頁應用開發(fā)技術。
AJAX是一些老技術的新應用, 應用到了html css javascript dom , 以XMLHttpRequest為技術核心實現網頁異步數據傳輸。
最大特點就是:網頁不用刷新進行數據傳輸
用戶注冊
AJAX分頁效果
圖片加載瀑布流效果
傳統的數據提交方式
AJAX數據提交方式
通過上述對比,客戶端用戶部分減少了2個流程,交給了ajax去處理,那么就減少了用戶的等待時間,用戶體驗大大的提升
? 減少服務器帶寬,按需獲得數據
注意:在一些有列表展示功能的地方優(yōu)勢特別突出
? 無刷新更新頁面,減少用戶的實際和心理等待時間
注:用戶注冊,用戶登錄。多數據信息的展示
? 更好的用戶體驗,傳統數據提交會刷新頁面,易丟失用戶填寫數據
? 主瀏覽器都支持
XHR = new XMLHttpRequest();
創(chuàng)建請求頭使用OPEN,主要實現(請求類型,請求地址)
對象.open(請求類型GET/POST,請求地址,[同步true/異步false]);
默認:同步 True
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭
XHRObj.open('GET','demo.php');
主要實現請求服務器操作
對象.send(POST請求則填寫POST的數據/GET請求可以不用寫);
【HTML代碼】
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭
XHRObj.open('GET','demo.php');
//發(fā)送請求 對象.send(POST請求則填寫POST的數據/GET請求可以不用寫);
XHRObj.send();
</script>
【PHP代碼】
<?php
echo 'test';
腳下留心:
一定要在服務器目錄下面運行AJAX-發(fā)送請求.html,不能直接用瀏覽器瀏覽該文件
對象.responseText (獲取服務器響應的字符串數據)
對象.responseXML(獲取服務器響應的xml數據)
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭
XHRObj.open('GET','demo.php');
//發(fā)送請求 對象.send(POST請求則填寫POST的數據/GET請求可以不用寫);
XHRObj.send();
//alert返回的數據
alert(XHRObj.responseText);
</script>
案例運行結果
腳下留心:無法響應數據
原因:在AJAX沒有完成請求這個時候是沒有返回值的,所以獲取數據是沒有結果的。
解決方法:通過判斷reaystate == 4 是否AJAX請求完成
Onreadystatechange 作用:ajax在請求的過程中發(fā)生任何狀態(tài)的變化都會調用該方法
Readystate 作用:返回ajax的請求狀態(tài)
狀態(tài)說明:
最終代碼:以及結果
思考:為什么沒有打印0~4
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭
XHRObj.open('GET','demo.php');
//發(fā)送請求 對象.send(POST請求則填寫POST的數據/GET請求可以不用寫);
console.log(XHRObj.readyState);
//發(fā)送請求
XHRObj.send();
//當請求狀態(tài)發(fā)送變化時ajax會自動調用該方法onreadystatechange
XHRObj.onreadystatechange=function(){
console.log(XHRObj.readyState);
if(XHRObj.readyState==4){
console.log(XHRObj.responseText);
}
}
console.log(XHRObj.readyState+'sdf');
</script>
說明:
程序是從上往下進行的, 里面的代碼是等發(fā)送異步請求完了才去執(zhí)行的。
狀態(tài)0是無法獲取的,因為實例化AJAX的對象,然而監(jiān)聽需要對象對象里面的屬性來完成,所以0裝就是實例化對象的時候。
思考:避免接口寫錯
例如:
在實際使用中,我們?yōu)榱酥挥性谡埱蟮慕涌谡_的時候獲取相應的數據,一般我們要判斷返回的HTTP狀態(tài)是否正確,
使用:
對象.status == 200
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭
XHRObj.open('GET','demo1.php');
//發(fā)送請求 對象.send(POST請求則填寫POST的數據/GET請求可以不用寫);
// console.log(XHRObj.readyState);
//發(fā)送請求
XHRObj.send();
//當請求狀態(tài)發(fā)送變化時ajax會自動調用該方法onreadystatechange
XHRObj.onreadystatechange=function(){
// console.log(XHRObj.readyState);
if(XHRObj.readyState == 4 && XHRObj.status == 200){
console.log(XHRObj.responseText);
}
// else{
// //以郵件或者短信的形式發(fā)送通網站管理員
// alert('服務器錯誤,很忙......');
// }
}
// console.log(XHRObj.readyState+'sdf');
</script>
判斷用戶名admin是否存在,當存在的時候返回【不可用】,當不存在的時候返回【可用】
明確需求:
第一步:給按鈕增加點擊事件
第二步:獲取用戶輸入的值username
第三步:使用AJAX將內容發(fā)送給服務器端PHP文件
第四步:編寫PHP文件checkuser.php 判斷用戶是否存在,返回結果
第五步:將PHP返回的結果彈出來
<!--
第一步:給按鈕增加點擊事件
第二步:獲取用戶輸入的值username
第三步:使用AJAX將內容發(fā)送給服務器端PHP文件
第四步:編寫PHP文件checkuser.php 接受參數,并且判斷用戶是否存在,返回結果
第五步:將PHP返回的結果彈出來
-->
<script type="text/javascript">
//按鈕綁定事件,給input增加ID屬性
var checkObj = document.getElementById('check');
checkObj.onclick = function(){
var username = document.getElementById('username').value;
//創(chuàng)建ajax對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭,設置請求發(fā)送的地址和類型,并且將參數傳遞給服務端
XHRObj.open('get','check.php?username='+username);
//獲取服務器端返回的數據
XHRObj.onreadystatechange = function(){
if(XHRObj.readyState == 4 && XHRObj.status == 200){
alert(XHRObj.responseText);
}
}
//發(fā)送請求
XHRObj.send();
}
</script>
<?php
//定義一個用戶數組
$user = array('admin','xiaoming','xiaohong','xiaoqiang');
//獲取傳遞的參數
$username = $_GET['username'];
//判斷用戶是否存在在數組中
if(in_array($username,$user)){
echo '不可用';
}else{
echo '可用';
}
進化版本
1)進化要求
當用戶名可用的時候后面增加√說可用,當用戶名不可用的時候出現一個×提示當前用戶名太火,請換一個
HTML代碼
<style>
.error{
color: red;
font-size: 14px;
}
.green{
color: green;
font-size: 14px;
}
</style>
<body>
<!-- <span class="error">×此用戶名太首歡迎,請換一個</span>-->
<!-- <span class="green">√恭喜你,該用戶可用</span>-->
<table border="1">
<th colspan="2">用戶注冊</th>
<tr>
<td><input id="username" name="username" type="text"/><div id='error'></div></td>
<td><input id="check" type="button" value="檢測用戶"/></td>
</tr>
</table>
</body>
<!--
第一步:給按鈕增加點擊事件
第二步:獲取用戶輸入的值username
第三步:使用AJAX將內容發(fā)送給服務器端PHP文件
第四步:編寫PHP文件checkuser.php 接受參數,并且判斷用戶是否存在,返回結果
第五步:將PHP返回的結果彈出來
-->
<script type="text/javascript">
//按鈕綁定事件,給input增加ID屬性
var checkObj = document.getElementById('check');
checkObj.onclick = function(){
var username = document.getElementById('username').value;
//創(chuàng)建ajax對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭,設置請求發(fā)送的地址和類型,并且將參數傳遞給服務端
XHRObj.open('get','check.php?username='+username);
//獲取服務器端返回的數據
XHRObj.onreadystatechange = function(){
if(XHRObj.readyState == 4 && XHRObj.status == 200){
// alert(XHRObj.responseText);
if(XHRObj.responseText =='可用'){
document.getElementById('error').innerHTML='<span class="green">√恭喜你,該用戶沒有被注冊</span>';
}else{
document.getElementById('error').innerHTML=' <span class="error">×此用戶名太首歡迎,請換一個</span>';
}
}
}
//發(fā)送請求
XHRObj.send();
}
</script>
數據方面:GET受瀏覽器的影響
POST 原則上是不受限制的,可以通過PHP配置POST_MAX_SIZE進行更改
安全方面:POST比GET要安全
文件上傳:GET不能進行文件上傳
說明:在請求地址后面增加參數,例如:demo.php?a=111&b=222&c=333
【HTML代碼】
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭,請求方式,請求鏈接
XHRObj.open('get','test.php?a=111&b=222&c=333');
//發(fā)送請求
XHRObj.send();
</script>
【PHP代碼】
<?php
var_dump($_GET);
Open(‘POST’,請求地址);
設置發(fā)送的數據格式,采用URL編碼格式
對象.setRequestHeader(‘content-type’,’application/x-www-form-urlencoded’);
對象.send(發(fā)送的數據);
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
XHRObj.onreadystatechange = function() {
if (XHRObj.readyState == 4) {
alert(XHRObj.responseText);
}
}
//創(chuàng)建請求頭,請求方式,請求鏈接
XHRObj.open('post','test.php');
//發(fā)送post的數據
var postData = 'name=123123&age=rrr';
//設置數據編碼格式,使用URL編碼格式
XHRObj.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
//發(fā)送請求
XHRObj.send(postData);
</script>
【PHP代碼】
<?php
var_dump($_POST);
效果
4.練習:表單無刷新數據錄入
同步:等待服務器響應完成在執(zhí)行下一段JS代碼 (阻塞模式)
異步:不等服務器響應完成直接執(zhí)行下一段JS代碼(非阻塞模式)
設置open(方式,請求地址,false/同步);
HTML【代碼】
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭
XHRObj.open('GET','demo.php',false);
//時時監(jiān)控
XHRObj.onreadystatechange = function(){
if(XHRObj.readyState == 4){
console.log('111');
}
}
//發(fā)送請求 對象.send(POST請求則填寫POST的數據/GET請求可以不用寫);
XHRObj.send();
console.log('js執(zhí)行完成');
</script>
【PHP代碼】
為了增加延遲效果使用sleep
<?php
sleep(8);
echo 'test';
【HTML代碼】
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭
XHRObj.open('GET','demo.php');
//時時監(jiān)控
XHRObj.onreadystatechange = function(){
if(XHRObj.readyState == 4){
console.log('111');
}
}
//發(fā)送請求 對象.send(POST請求則填寫POST的數據/GET請求可以不用寫);
XHRObj.send();
console.log('js執(zhí)行完成');
</script>
【PHP代碼】
<?php
sleep(8);
echo 'test';
我們再瀏覽一些網站的時候瀏覽器為了方便用戶再次訪問的時候增加用戶訪問體驗會將一些靜態(tài)資源文件緩存到本地
緩存的位置在:
選中IE瀏覽器右鍵
打開
靜態(tài)緩存目錄就出現再這里面了
說明:IE存在緩存
代碼設置:?t=Math.random()
缺點:
1.不能保證URL絕對唯一
2.產生大量緩存文件
代碼設置:?t=new Date().getTime(); //取得毫秒時間戳
優(yōu)點:保證URL絕對唯一
缺點:依然產生大量緩存文件
代碼設置:對象.setRequestHeader("If-Modified-Since","0");
原理分析:
If-Modified-Since是標準的HTTP請求頭標簽,在發(fā)送HTTP請求時,把瀏覽器端緩存頁面的最后修改時間一起發(fā)到服務器去,服務器會把這個時間與服務器上實際文件的最后修改時間進行比較。
如果時間一致,那么返回HTTP狀態(tài)碼304(不返回文件內容),客戶端接到之后,就直接把本地緩存文件顯示到瀏覽器中。
如果時間不一致,就返回HTTP狀態(tài)碼200和新的文件內容,客戶端接到之后,會丟棄舊文件,把新文件緩存起來,并顯示到瀏覽器中。
代碼設置:header("Cache-Control: no-cache, must-revalidate");
原理分析:
利用php的header函數向響應頭中寫數據,寫的是告訴客戶端:不要對本次的結果進行緩存。
這種做法,可以從根本上解決緩存問題,不產生任何緩存文件。
普通字符串文本格式:responseText
XML數據格式:responseXML
JSON 字符串數據格式:responseText (在實際工作中用到最多,最廣泛的格式)
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭
XHRObj.open('GET','text.php');
//時時監(jiān)控
XHRObj.onreadystatechange = function(){
if(XHRObj.readyState == 4 && XHRObj.status == 200){
document.getElementById('content').innerHTML=XHRObj.responseText;
}
}
//發(fā)送請求 對象.send(POST請求則填寫POST的數據/GET請求可以不用寫);
XHRObj.send();
</script>
<body>
<div id="content"></div>
</body>
<?php
echo '<h1>返回的文本</h1>';
最終效果
<script type="text/javascript">
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//創(chuàng)建請求頭
XHRObj.open('GET','xml.php');
//時時監(jiān)控
XHRObj.onreadystatechange = function(){
if(XHRObj.readyState == 4 && XHRObj.status == 200){
var xmlObj = XHRObj.responseXML;
//以前獲取html文檔我們使用 document.getElementByTagName()
books = xmlObj.getElementsByTagName('book');
for(i=0;i<books.length;i++){
//獲取第二級的值我們使用childen 方法
for(j=0;j<books[i].children.length;j++){
console.log(books[i].children[j].innerHTML);
}
}
}
}
//發(fā)送請求 對象.send(POST請求則填寫POST的數據/GET請求可以不用寫);
XHRObj.send();
</script>
1.2PHP代碼
首先確保PHP寫的xml文件能再瀏覽器端訪問
<?php
header('Content-Type:text/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="utf-8"?>
<books>
<book>
<name>西游記</name>
<price>50.12</price>
</book>
<book>
<name>三國演義</name>
<price>876.12</price>
</book>
</books>
';
JSON(javascript Object Notation js 對象標記) 是一種輕量級的數據交換格式。
數據格式比較簡單,易于讀寫, 格式都是壓縮的,占用帶寬小
易于解析這種語言,客戶端JavaScript可以簡單的通過eval()進行JSON數據的讀取
因為JSON格式能夠直接為服務器端代碼使用, 大大簡化了服務器端和客戶端的代碼開發(fā)量, 但是完成的任務不變, 且易于維護
PHP端生成JSON數據使用:json_encode(數組數據格式);
PHP端解析JSON數據使用:json_decode(待解碼數據,true/false);
說明:false 解碼出來的數據是一個對象,true,解碼出來的是一個數組
由于我們返回值的處理使用的是responseText 格式
語法格式:JSON.parse(字符串);
作用:從一個字符串中解析出json數據對象
前提:字符串必須是json格式的字符串
用戶會員注冊功能,用戶填寫好根據規(guī)則進行驗證,如果驗證成功提示用戶注冊成功。
驗證規(guī)則:
1.用戶名不能為空
2.用戶名必須是由數字和字母組成,而且是在6~8位之間
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>AJAX-用戶注冊</title>
</head>
<style>
dd{float: left;}
</style>
<body>
<div>
<dl>
<dd>用戶名</dd>
<dd><input type="text" name="username" id="username"></dd>
<dd><input type="button" id="regbtn" value="注冊"></dd>
</dl>
</div>
</body>
<script type="text/javascript">
//給注冊按鈕增加click事件
var regbtn = document.getElementById('regbtn');
regbtn.onclick = function(){
//獲取用戶輸入的值
var username = document.getElementById('username').value;
//創(chuàng)建AJAX對象
var XHRObj = new XMLHttpRequest();
//打開對象
XHRObj.open('get','reg.php?username='+username);
//實時監(jiān)控AJAX運行狀態(tài)
XHRObj.onreadystatechange = function(){
//判斷服務器是否響應成功
if(XHRObj.readyState==4 && XHRObj.status == 200){
//將json數據轉換成對象
jsonObj = JSON.parse(XHRObj.responseText);
//判斷用戶是否操作成功進行頁面跳轉
if(jsonObj.state ==1){
location.href='success.html';
}else{
alert(jsonObj.msg);
}
}
}
//發(fā)送請求
XHRObj.send();
}
</script>
</html>
*請認真填寫需求信息,我們會在24小時內與您取得聯系。