abstrak:用戶登錄的簡(jiǎn)單驗(yàn)證功能,利用數(shù)組來(lái)模擬實(shí)現(xiàn)(ajax+json)<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> &nbs
用戶登錄的簡(jiǎn)單驗(yàn)證功能,利用數(shù)組來(lái)模擬實(shí)現(xiàn)(ajax+json)
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>用戶登錄驗(yàn)證</title> <link rel="stylesheet" href="dist/css/bootstrap.min.css"> </head> <body> <div class="container"> <div class="row"> <div class="col-md-6"> <form class="form-horizontal" style="margin-top:10px;"> <div class="form-group"> <label for="email" class="col-sm-2 control-label">郵箱</label> <div class="col-sm-10"> <input type="text" class="form-control" name="email" id="email" placeholder="請(qǐng)輸入郵箱"> </div> </div> <div class="form-group"> <label for="password" class="col-sm-2 control-label">密碼</label> <div class="col-sm-10"> <input type="text" class="form-control" name="password" id="password" placeholder="密碼"> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10"> <button type="button" class="btn btn-success">登錄</button> </div> </div> <div class="form-group"> <div class="col-sm-offset-2 col-sm-10" id="check"> </div> </div> </form> </div> </div> </div> <script> let btn = document.getElementsByTagName('button')[0]; //console.log(btn); btn.onclick = function(){ //1.創(chuàng)建xhr對(duì)象 首先第一步 要new一個(gè)xhr出來(lái)。 let xhr = new XMLHttpRequest(); //2.監(jiān)聽響應(yīng)狀態(tài) onreadystatechange xhr.onreadystatechange = function(){ //readyState 等于4 為就緒狀態(tài) if(xhr.readyState === 4){ //判斷響應(yīng)結(jié)果是否為200 if(xhr.status === 200){ //響應(yīng)成功,通過xhr對(duì)象的responseText獲取響應(yīng)文本 //創(chuàng)建元素存放內(nèi)容時(shí)使用 let p = document.createElement('p'); p.style.color = 'red'; //JSON.parse服務(wù)器響應(yīng)字符串?dāng)?shù)據(jù)轉(zhuǎn)化成json對(duì)象 console.log(xhr.responseText); let json = JSON.parse(xhr.responseText); //利用InnerHTML方式寫入到新元素P上 if (json.status === 1) { p.innerHTML = json.msg; } else if (json.status === 0) { p.innerHTML = json.msg; } // 將響應(yīng)文本添加到新元素上 document.getElementById('check').appendChild(p); // 將新元素插入到當(dāng)前頁(yè)面中 //將按鈕禁用,防止多次點(diǎn)擊 btn.disabled = true; //設(shè)置延時(shí)2秒鐘 setTimeout(function(){ document.getElementById('check').removeChild(p); btn.disabled = false; if (json.status === 1) { location.href = 'admin.php'; } },2000); }else { // 響應(yīng)失敗,并根據(jù)響應(yīng)碼判斷失敗原因 alert('響應(yīng)失敗' + xhr.status); } }else{ //不為4 請(qǐng)求一直繼續(xù) } } //3.設(shè)置請(qǐng)求參數(shù) xhr.open('post','demo1.php',true); //4.設(shè)置請(qǐng)求頭信息,將內(nèi)容模擬成表單提交方式 xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); //5.發(fā)送請(qǐng)求信息 let data = { email: document.getElementById('email').value, password : document.getElementById('password').value }; //JSON.stringify() 方法是將一個(gè)JavaScript值(對(duì)象或者數(shù)組)轉(zhuǎn)換為一個(gè) JSON字符串 let data_json=JSON.stringify(data); xhr.send('data='+data_json); //xhr.send(null); } </script> </body> </html>
demo1.php
<?php $arr = array("email"=>"admin@126.com","password"=>"123456"); //print_r($_POST['data']); //echo $data['email']; $user = json_decode($_POST['data']); $email = $user->email; //$password = sha1($user->password); $password = $user->password; if ($arr['email'] == $email && $arr['password'] == $password ) { echo json_encode(['status'=>1,'msg'=>'登錄成功,正在跳轉(zhuǎn)...']) ; exit; } else { echo json_encode(['status'=>0,'msg'=>'郵箱或密碼錯(cuò)誤,登錄失敗!']) ; exit; }
admin.php
<?php echo "<h3>我是一個(gè)后臺(tái)</h3>";
Guru membetulkan:天蓬老師Masa pembetulan:2019-01-15 14:24:43
Rumusan guru:ajax交互, 不刷新頁(yè)面的也可以實(shí)現(xiàn)數(shù)據(jù)更新, ajax重點(diǎn)是在js對(duì)象的解析與dom操作