首頁 web前端 js教程 用AJAX實作頁面登陸以及註冊使用者名稱驗證的簡單實例

用AJAX實作頁面登陸以及註冊使用者名稱驗證的簡單實例

May 23, 2018 pm 02:14 PM
ajax 登陸

下面我就為大家帶來一篇用AJAX實現頁面登陸以及註冊用戶名驗證的簡單實例。現在就分享給大家,也給大家做個參考。

AJAX即「Asynchronous Javascript And XML」(非同步JavaScript和XML),指一個建立互動式網頁應用程式的網頁開發技術。

AJAX 是一種用於建立快速動態網頁的技術。其核心是 JavaScript 物件 XMLHttpRequest。該物件在 Internet Explorer 5 中首次引入,它是一種支援非同步請求的技術。簡而言之,XMLHttpRequest可讓您使用 JavaScript 向伺服器提出請求並處理回應,而不阻塞使用者。

透過在後台與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新。這意味著可以在不重新載入整個網頁的情況下,對網頁的某個部分進行更新。

傳統的網頁(不使用 AJAX)如果需要更新內容,必須重載整個網頁頁面。

試想如果在註冊時,提交了註冊信息,等了幾秒後頁面重載了,結果彈出一個提示框告訴你“用戶名已被使用”,那將是很令人惱火的一件事。所以在這裡,使用AJAX實現非同步請求,即可在不重載頁面的情況下實現與資料庫的通訊。

建立XMLHTTPRequest對象

#使用javascript在html頁面中建立XMLHTTPRequest對象,實作AJAX異步請求:

<span style="font-size:14px;">    var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(&#39;Microsoft.XMLHTTP&#39;);
      xmlhttp.open("POST", "AJAXTest.ashx?" + "i=5&j=10", true);
      xmlhttp.onreadystatechange = function ()
      {
        if (xmlhttp.readyState == 4)
        {
          if (xmlhttp.status == 200)
          {
            alert(xmlhttp.responseText);
          }
          else
          {
            alert("AJAX服务器返回错误!");
          }
        }
      }
      xmlhttp.send(); 


</span>
登入後複製

var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //建立XMLHTTP對象,考慮相容性

#xmlhttp.open("POST", "AJAXTest.ashx?" "i=5&j=10", true); //「準備」向伺服器的GetDate1.ashx發出Post請求(GET可能會有快取問題)。這裡還沒有發出請求。

readyState == 4 表示伺服器回傳完成資料了。之前可能會經歷2(請求已發送,正在處理中)、3(回應中已有部分資料可用了,但是伺服器還沒有完成回應的產生)

注意:   

不要以為if (xmlhttp.readyState == 4) 在send之前執行就覺得不對, xmlhttp.send(); 這時才開始發送請求。這時才開始發送請求後不等伺服器回傳數據,就繼續向下執行,所以不會阻塞,介面就不卡了,這就是AJAX中「A」的意思「非同步」。

AJAX的封裝

在實際專案開發中,會有多處用到AJAX非同步請求,可是建立物件程式碼這麼長,複製貼上都嫌麻煩,而且還會影響程式碼的觀賞性,所以需要將AJAX進行封裝。將其封裝成js功能文件,並在網頁中匯入即可進行引用。

簡單AJAX封裝後程式碼:

<span style="font-family:Times New Roman;font-size:14px;">     function ajax(url,onsuccess,onfail)
    {
      var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(&#39;Microsoft.XMLHTTP&#39;);
      xmlhttp.open("POST", url, true);
      xmlhttp.onreadystatechange = function ()
      {
        if (xmlhttp.readyState == 4)
        {
          if (xmlhttp.status == 200)
          {
            onsuccess(xmlhttp.responseText);//成功时逻辑操作
          }
          else
          {
            onfail(xmlhttp.status);//失败是逻辑操作
          }
        }
      }
      xmlhttp.send(); //这时才开始发送请求
    }</span>
登入後複製

封裝完成後,我們可以開始寫登陸判斷程式碼(我是用的是.net):

首先,建立一個html頁login.htm以及ashx一般處理程序userhandle.ashx,請求的url中帶上一個action參數,在一般處理程序中對請求進行處理。

function Submit1_onclick() {
      var name = document.getElementById("name").value;
      var psw = document.getElementById("psw").value;
      if (psw != "" && name != "") { 
       //调用AJAX
       ajax("../userhandle.ashx?operate=login&userName=" + name + "&psw=" + psw, function (resText) {
          if (resText == "fail") {
            alert("用户名或密码错误!");
            return false;
          }
          else {
            document.write(resText);
          }
        })
      }
      else {
        alert("请输入完整登陆信息!");
        return false;
      }
    }
登入後複製

在一般處理程序中接到請求動作,判斷並執行相關查詢,回傳一個字串,前台頁面接到後,判斷並執行對應功能。

 public void login(HttpContext context)
    {
      userBLL ub = new userBLL();
      string userName = context.Request["userName"];
      string userPsw = context.Request["psw"];   
      bool b = ub.Login(userName, userPsw);//封装好的bll层方法,判断用户名密码是否正确
      if (b == true)
      {
        context.Session["Name"] = userName;
        context.Session["role"] = "user";
        context.Response.Write("success");
       }
      else
      {
        context.Response.Write("fail");
      }
    }
登入後複製

伺服器判斷完後,將success或fail傳送到客戶端。這樣一個使用AJAX非同步請求實現登陸就完成了。

至於註冊是判斷用戶名,我就只貼上來:

function check() {
      var userName = document.getElementById("Text1").value;
      if (userName == "" || userName == null) {
        document.getElementById("nameMeg").style.color = "red";
        document.getElementById("nameMeg").innerHTML = "用户名为6-10位英文或数字";
      }
      else { 
      ajax("../userhandle.ashx?operate=checkName&userName=" + userName, function (resText) {
        if (resText == "forbid") {
          document.getElementById("nameMeg").style.color = "red";
          document.getElementById("nameMeg").innerHTML = "用户名含有非法词语";
        } else if (resText == "already have") {
          document.getElementById("nameMeg").style.color = "red";
          document.getElementById("nameMeg").innerHTML = "用户名已被使用";
        } else {
          document.getElementById("nameMeg").style.color = "green";
          document.getElementById("nameMeg").innerHTML = "可以使用";
        }
      })
      }
    }
登入後複製

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

Ajax post請求跳轉頁面

#Ajax提交表單頁面刷新很快的解決方法

Ajax開啟新視窗被瀏覽器攔截的兩個解決方案

以上是用AJAX實作頁面登陸以及註冊使用者名稱驗證的簡單實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PlayStation網路登入失敗,但網路連線成功 PlayStation網路登入失敗,但網路連線成功 Feb 19, 2024 pm 11:33 PM

一些玩家在PS4或PS5發佈時遇到了一個奇怪的問題。例如,當他們的PlayStation網路登入失敗,但網路連線正常時,這可能會引起困擾。輸入登入資訊時,可能會遇到錯誤,而且可能無法加入PSParty聊天。如果你遇到了類似問題,這個指南可能會幫助你解決。在PlayStationNetworkSign-in旁邊,你會看到錯誤訊息‘AnErrorHaveAreAre’,它會顯示‘Failure’。其他參數如取得IP位址、網路連線和連線速度都是成功的。那麼,這裡的問題可能是什麼呢?我會給你工作的

修正AADSTS7000112,應用程式已停用Microsoft帳號登入錯誤 修正AADSTS7000112,應用程式已停用Microsoft帳號登入錯誤 Feb 19, 2024 pm 06:27 PM

AADSTS7000112錯誤可能會阻止您使用Microsoft帳戶登入應用程序,造成您不便。本文將為您提供解決方案,幫助您解決這個問題,恢復正常的登入體驗。登入:很抱歉,您登入時遇到問題。 AADSTS7000112:應用程式已停用。幸運的是,您可以遵循一些簡單的建議來修復錯誤。錯誤代碼AADSTS7000112是什麼?錯誤代碼AADSTS7000112表示與Microsoft的AzureActiveDirectory連線出現問題。通常情況下,這可能是由於嘗試登入的Microsoft應用程式被

企業微信的信箱怎麼登陸 企業微信的信箱怎麼登陸 Mar 10, 2024 pm 12:43 PM

企業微信的郵箱怎麼登陸?企業微信APP中是可以登陸郵箱,但是多數的用戶不知道郵箱如何的登陸,接下來就是小編為用戶帶來的企業微信郵箱登陸方法圖文教程,感興趣的用戶快來一起看看吧!企業微信使用教程企業微信的郵箱怎麼登陸1、先打開企業微信APP,進入到主頁最底部【工作台】點擊來專區;2、之後在工作台專區中,選擇其中的【企業郵箱】服務; 3.然後跳到企業信箱功能頁,點選底部的【綁定】或【換一個信箱】;4、最後在下圖所示的頁面輸入【QQ帳號】和【密碼】即可登陸信箱。

解決jQuery AJAX請求遇到403錯誤的方法 解決jQuery AJAX請求遇到403錯誤的方法 Feb 20, 2024 am 10:07 AM

標題:解決jQueryAJAX請求出現403錯誤的方法及程式碼範例403錯誤是指伺服器禁止存取資源的請求,通常會導致出現這個錯誤的原因是請求缺少權限或被伺服器拒絕。在進行jQueryAJAX請求時,有時會遇到這種情況,本文將介紹如何解決這個問題,並提供程式碼範例。解決方法:檢查權限:首先要確保請求的URL位址是正確的,同時驗證是否有足夠的權限來存取該資

GeForce Experience登入當機[修復] GeForce Experience登入當機[修復] Mar 19, 2024 pm 06:30 PM

本文將引導您解決在Windows11/10上出現的GeForceExperience登入當機問題。通常情況下,這可能是由於不穩定的網路連接、損壞的DNS快取、過時或損壞的圖形卡驅動程式等原因引起的。修復GeForceExperience登入黑畫面在開始之前,請確保重新啟動您的網路連線和電腦。有時候,這個問題可能只是因為臨時問題所引起的。如果您仍遇到NVIDIAGeForceExperience登入黑畫面問題,請考慮採取以下建議:檢查您的internet連線切換到另一個Internet連線停用您的

解決jQuery AJAX請求403錯誤的方法 解決jQuery AJAX請求403錯誤的方法 Feb 19, 2024 pm 05:55 PM

jQuery是一個受歡迎的JavaScript函式庫,用來簡化客戶端端的開發。而AJAX則是在不重新載入整個網頁的情況下,透過發送非同步請求和與伺服器互動的技術。然而在使用jQuery進行AJAX請求時,有時會遇到403錯誤。 403錯誤通常是伺服器禁止存取的錯誤,可能是由於安全性原則或權限問題導致的。在本文中,我們將討論如何解決jQueryAJAX請求遭遇403錯誤

Wegame登陸操作太頻繁怎麼解決? Wegame登陸操作太頻繁怎麼解決? Mar 14, 2024 pm 07:40 PM

Wegame是一款搭配騰訊遊戲使用的軟體,可以透過它來啟動遊戲,獲得加速,而近期有不少用戶在使用的時候出現了登陸操作過於頻繁的提示,面對這個提示,許多用戶都不知道怎麼才能夠成功解決,那麼本期軟體教學就來和大夥分享解決方法,一起來了解看看吧。  Wegame登陸操作過於頻繁怎麼辦?  方法一:  1、先確認一下我們的網路連線是否正常。  (可以嘗試開啟瀏覽器,看看能不能上網)  2、如果是網路故障,那麼試著重新啟動路由器、重新連線、重新啟動電腦來解決。  方法二:  1、如果網路沒有問題,那麼選擇&

如何解決jQuery AJAX報錯403的問題? 如何解決jQuery AJAX報錯403的問題? Feb 23, 2024 pm 04:27 PM

如何解決jQueryAJAX報錯403的問題?在開發網頁應用程式時,經常會使用jQuery來發送非同步請求。然而,有時在使用jQueryAJAX時可能會遇到錯誤代碼403,表示伺服器禁止存取。這種情況通常是由伺服器端的安全性設定所導致的,但可以透過一些方法來解決這個問題。本文將介紹如何解決jQueryAJAX報錯403的問題,並提供具體的程式碼範例。一、使

See all articles