ajax登錄驗證的原理,ajax用戶登錄驗證-get和post提交方式,與工作原理—2018-8-15...

ajax用戶登錄驗證:

實例

html>

Ajax實戰:表單驗證

用戶登錄

郵箱:?

密碼:?

提交

let?btn?=?document.getElementsByTagName('button')[0];

btn.onclick?=?function?()?{

//1.創建xhr對象

let?xhr?=?new?XMLHttpRequest();

//2.監聽響應狀態

xhr.onreadystatechange?=?function(){

//?準備就緒

if?(xhr.readyState?===?4)?{

//?判斷響應結果:

if?(xhr.status?===?200)?{

let?p?=?document.createElement('p');??//創建新元素放返回的內容

p.style.color?=?'red';

//?將服務器端返回的json字符串轉為js對象

let?json?=?JSON.parse(xhr.responseText);

//?如果json.statu?==?1?表示查詢成功

if?(json.statu?===?1)?{

p.innerHTML?=?json.msg;

}?else?if?(json.statu?==?0)?{

p.innerHTML?=?json.msg;

}

//?將響應文本添加到新元素上

document.forms[0].appendChild(p);

//?把點擊過的按鈕禁用掉

btn.disabled?=?true;

//?定時器,把提示的信息2秒后消失

setTimeout(function(){

//?將提示信息刪除

document.forms[0].removeChild(p);

//?啟動按鈕

btn.disabled?=?false;

if?(json.statu?==?1)?{

//?跳轉

location.href?=?'admin.php';

}

},2000);

}?else?{

//?響應失敗,并根據響應碼判斷失敗原因

alert('響應失敗'+xhr.status);

}

}?else?{

//?http請求仍在繼續,這里可以顯示一個一直轉來轉去的圖片

}

}

//3.設置請求參數

xhr.open('post','inc/demo.php',true);

//4.?設置頭信息,將內容類型設置為表單提交方式

xhr.setRequestHeader('Content-Type',?'application/x-www-form-urlencoded');

let?data?=?{

email:document.getElementsByName('email')[0].value,

password:document.getElementsByName('password')[0].value

};

//?將js對象轉為json字符串

let?data_json=JSON.stringify(data);

//4.發送請求

xhr.send('data='+data_json);

}

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

inc/demo.php處理數據文件:

實例

//?將json字符串轉為php對象

$user?=?json_decode($_POST['data']);

$email?=?$user->email;

$password?=?$user->password;

//?數據庫驗證用戶

$pdo?=?new?PDO('mysql:host=127.0.0.1;dbname=php','root','root');

//?滿足條件的記錄數

$sql?=?"SELECT?COUNT(*)?FROM?`lianxi`?WHERE?`email`='{$email}'?AND?`password`='{$password}'";

//?預處理對象

$stmt?=?$pdo->prepare($sql);

//?執行語句

$stmt->execute();

//判斷記錄數是否存在

if($stmt->fetchColumn(0)?==?1){

echo?json_encode(['statu'=>1,'msg'=>'登錄成功,正在跳轉...']);

exit;

}else{

echo?json_encode(['statu'=>0,'msg'=>'郵箱或密碼錯誤,請重新輸入...']);

exit;

}

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

ajax提交get和post方式:

get方式:

實例

html>

get方式

郵箱:

密碼:

提交

let?bth?=?document.getElementsByName('button')[0];

bth.onclick?=?function?()?{

let?email?=?document.getElementsByName('email')[0].value;

let?password?=?document.getElementsByName('password')[0].value;

let?xhr?=?new?XMLHttpRequest();

//?email和password是input控件的name值

let?url?=?'inc/demo1.php?email='+email+'&password='+password;

//第一個參數是以什么方式發送????第二個發送的url???第三個是否異步默認true(異步)

xhr.open('get',url,true);

xhr.send(null);

//當狀態碼為4的時候為請求處理完成,返回結果

xhr.onreadystatechange?=?function?()?{

if(xhr.readyState?===?4){

console.log(xhr.responseText);?//xhr.responseText接收返回的數據

}

}

}

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

post方式:

實例

html>

post方式

郵箱:

密碼:

提交

let?bth?=?document.getElementsByName('button')[0];

bth.onclick?=?function?()?{

let?email?=?document.getElementsByName('email')[0].value;

let?password?=?document.getElementsByName('password')[0].value;

let?xhr?=?new?XMLHttpRequest();

//?email和password是input控件的name值

let?url?=?'inc/demo1.php?email='+email+'&password='+password;

//第一個參數是以什么方式發送????第二個發送的url???第三個是否異步默認true(異步)

xhr.open('post',url,true);

//?post方式要設置請求頭信息

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

xhr.send('email='+email+'&password='+password);

//當狀態碼為4的時候為請求處理完成,返回結果

xhr.onreadystatechange?=?function?()?{

if(xhr.readyState?===?4){

console.log(xhr.responseText);?//xhr.responseText接收返回的數據

}

}

}

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

inc/demo1.php處理數據提交文件:

實例

//編碼

header("Content-type:?text/html;?charset=utf-8");

//?get獲取數據

$a?=?$_GET['email'];

$b?=?$_GET['password'];

//?post獲取數據

$a?=?$_POST['email'];

$b?=?$_POST['password'];

echo?'郵箱:'.$a.'密碼:'.$b;

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

ajax工作原理:

當用戶提交數據后,頁面不會發生跳轉,保持當前的頁面,但是數據已經提交到服務器,當服務器處理用戶提交的數據后,然后返回前端也就是用戶點擊提交數據的界面。前端看起來并沒有發生什么,但是數據已經發生了改變。

比如說用戶登錄時提交了登錄的表單,而這些數據急速的請求到服務器中,等服務器接收處理后便返回了前端,很明顯的給用戶提示,提升用戶體驗。

ajax有異步和同步,異步是指:當用戶做了很多的操作,而不是等到服務器返回數據后在進行操作下一步。同步的話:當用戶操作了這一件事,沒等到服務器返回的請求不能進行下一步的操作!

如果我的思路不對,請老師點一下!謝謝

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396632.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396632.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396632.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

將Python腳本打包成可執行文件

Python是一個腳本語言,被解釋器解釋執行。它的發布方式: .py文件:對于開源項目或者源碼沒那么重要的,直接提供源碼,需要使用者自行安裝Python并且安裝依賴的各種庫。(Python官方的各種安裝包就是這樣做的&a…

float foo=42e1為什么錯_為什么重寫了equals()也要重寫hashCode()

小Hub領讀:雖然是很基礎的一篇文章,但是對于equals、hashcode兩個方法,相信很多人都與其中的規則不熟悉,來跟著小Hub花個8分鐘回顧一下!作者:不學無數的程序員https://my.oschina.net/u/4030990/blog/31341…

ssh客戶端_一款基于TAS框架的SSH客戶端蠕蟲

TEA是一款基于TAS框架的SSH客戶端蠕蟲,從本質上說,它是一個仿冒的SSH客戶端,它能夠修改tty輸入/輸出來實現任意命令執行,或通過SSH連接來上傳自身以實現滲透感染。為了實現該工具的正常功能,遠程主機需要滿足以下條件&…

Selenium入門11 滾動條控制(通過js)

這一節要有js基礎。做web端的UI自動化必須要有html,css,javascript前端基礎。 滾動條控制: 1 移動垂直滾動條 document.documentElement.scrollTop 2 移動垂直滾動條 document.documentElement.scrollLeft 3 找到某個元素,移動到可…

Qt之QNetworkInterface

簡述 QNetworkInterface類負責提供主機的IP地址和網絡接口的列表。 QNetworkInterface表示了當前程序正在運行時與主機綁定的一個網絡接口。每個網絡接口可能包含0個或多個IP地址,每個IP地址都可選擇性地與一個子網掩碼和/或一個廣播地址相關聯。這樣的列表可以通過…

第二周計劃

上周計劃回顧 3.5 ~ 3.11 數據: 評師網爬取,完成:2k條記錄 finished后端 數據結構 技術選型 學校API封裝未完成:后端負責人出差 工作暫停產品 功能設計:主要功能提交:原型圖 幾個頁面 每個頁面大概功能完成…

python編程軟件排行榜_PYPL 9月編程語言排行榜發布 Python一枝獨秀

開發者可以將 PYPL 作為一個參考,決定學習何種語言或 IDE,或者在新的軟件項目中使用何種語言或數據庫。9 月份的榜單如下:前五名分別是 Python、Java、JavaScript、C# 與 PHP。相比去年 9 月份的數據,除了 Python 大幅上漲了 4.5%…

分享到系統面板_win7電腦沒有nvidia控制面板怎么辦【解決方法】

我們在使用電腦的時候,當電腦顯卡出現問題導致屏幕畫面不清晰時,可以使用win7系統自帶nvidia控制面板,它能夠對顯卡進行設置,提升顯卡功能,不過很多電腦用戶點擊nvidia控制面板時卻提示nvidia顯示設置不可用&#xff0…

Python之數據加密與解密(hashlib、hmac、random、base64、pycrypto)--轉載

本文內容 數據加密概述Python中實現數據加密的模塊簡介hashlib與hmac模塊介紹random與secrets模塊介紹base64模塊介紹pycrypto模塊介紹總結參考文檔提示: Python 2.7中的str是字節串,而Python 3.x中的str是字符串。本文中的代碼都是通過Python 2.7實現的…

day3-文件操作之基本操作

一、文件的基本操作 文件內容: Somehow, it seems the love I knew was always the most destructive kind 不知為何,我經歷的愛情總是最具毀滅性的的那種 Yesterday when I was young 昨日當我年少輕狂1、read() 當read()函數中傳入整數(int)參數&#…

QT連接多種數據庫f方法及測試

QT提供了對多種數據庫的訪問支持,對SQL Server也可以通過ODBC來進行訪問。要想順利訪問SQL Server。 首先要保證以下幾點:1. QT編譯時已經編譯了QtSql2. 編譯了ODBC插件。可以通過 configure -plugin-sql-odbc來保證,也可以單獨編譯~/src/plu…

服務器如何實現電腦無線橋接,無線路由器WDS橋接成功副路由器下電腦無法上網怎么辦【解決方法】...

摘 要無線WDS橋接設置完成后,在副路由器管理面,運行狀態 無線狀態 中,WDS狀態顯示成功,但電腦通過副路由無法上網。該問題可能與主、副路由器的設置有關,如下圖所示: 解決辦法: 排查一&#xff…

spad 探測器_從光到光子—“單光子”探測器

光電探測器光電探測器是指在光輻射作用下將其非傳導電荷變為傳導電荷的一類器件。在電子學中,二極管是一種具有不對稱傳輸特性的雙端電子元件,在一個方向上對電流具有低(理想為零)電阻,在另一個方向上具有高(理想為無限)電阻。最常見的類型如…

天地圖專題五:在天地圖上繪制電子區域并保存數據

版權聲明:本文為博主原創文章,轉載請注明出處。 上一文章講了如何在天地圖上顯示坐標軌跡。 本文介紹如何在天地圖上繪制電子區域(電子范圍或電子柵欄),并且,我們要將我們繪制的電子區域的坐標數據保存到數…

Mysql中natural join和inner join的區別

假設有如下兩個表TableA,TableB TableA TableB Column1 Column2 Column1 Column3 1 2 1 3TableA的Column1列名和TableB的Column1列名相同。 SELECT * FROM TableA INNER JOIN TableB USING (Column1) SEL…

微信和支付寶的服務器在哪里,手機恢復出廠設置,里面支付寶與微信怎么辦?原來數據在這里...

當手機使用一段時間之后,因為硬件落后會出現卡頓、內存不足等情況,這個時候提高手機速度最直接的一個辦法就是恢復出廠設置,雖然不能從根源上解決問題,但是還是可以湊合個半年時間的。那么這個時候就出現一個問題,手機…

python線上編輯問題_python django - static文件處理與線上部署測試

static文件相關操作涉及:a. 文件位置與訪問路徑映射b. setting.py與static相關配置STATIC_URLSTATIC_ROOTSTATICFILES_DIRSc. html中對于static文件引用方式d. python manage.py collectstatic1. 開發環境-目錄結構2. setting.py 設置STATIC_URL /static/# STATIC_…

android arcgis 繪制圓_arcgis for android 定位 圓

不多說直接代碼 ,群里人共享的方法一: /*** 繪制圓,配合 cleargraphicLayer()清除** param center 圓心* param radius 半徑* param alpha 填充的透明度 0-100* param fillColor 填充的顏色*/public void DrawCircle(Point center, double radius, int a…

CreateSolidBrush

[聲明] WINGDIAPI HBRUSH WINAPI CreateSolidBrush(COLORREF color); [功能] 初始化一個指定顏色的畫刷。畫筆可以隨后被選為任何設備上下文的當前刷子。 [參數表] color 畫刷的顏色[返回值] Long,如函數執行成功,就返回指向新畫筆的一個句柄&#xff1b…

mysql insert 不需要日志_MySQL數據庫性能優化(1)「轉」

1、MySQL概述從本文開始我們將討論建立在塊存儲方案之上的關系型數據庫的性能優化方案和集群方案。關系型數據庫的選型將以創業公司、互聯網行業使用最廣泛的MySQL數據為目標,但是MySQL的安裝過程和基本使用方法等知識并不在我們討論的范圍內。后續幾篇文章我們首先…