jSon和Ajax登錄功能,ajax數據交互案例

来源:https://www.cnblogs.com/chenyingying0/archive/2020/02/18/12329326.html
-Advertisement-
Play Games

ajax實例,檢測用戶與註冊 檢測用戶名是否被占用: 在用戶填寫完用戶名之後,ajax會非同步向伺服器發送請求,判斷用戶名是否存在 首先寫好靜態頁面: index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> < ...


ajax實例,檢測用戶與註冊

檢測用戶名是否被占用:

在用戶填寫完用戶名之後,ajax會非同步向伺服器發送請求,判斷用戶名是否存在

首先寫好靜態頁面:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        body{
            background-color: #333;
        }
        a{
            text-decoration: none;
        }
        .box{
            width:300px;
            height:270px;
            margin:80px auto;
            background-color: #abcdef;
            border-radius: 5px;
            padding:15px 30px;
        }
        .box .title{
            height:15px;
            margin-bottom:20px;
        }
        .box .title span{
            font-size:16px;
            color:#333;
            margin-right:15px;
        }
        .box .title span.current{
            color:red;
        }
        .box div{
            width:280px;
            height:30px;
            margin-bottom:25px;
            padding:8px 10px;
            background-color: #fff;
            border-radius: 5px;
            color:#666;
            position: relative;
        }
        .box div span{
            display: inline-block;
            padding-top:4px;
            padding-right:6px;
        }
        .box div input{
            border:none;
            outline:none;
            font-size:16px;
            color:#666;
            margin-top:5px;
        }
        .box div i{
            width:16px;
            height:16px;
            position: absolute;
            top:14px;
            right:12px;
        }
        .box div i.ok{
            background:url(icon.png) no-repeat 0 -67px;
        }
        .box div i.no{
            background:url(icon.png) no-repeat -17px -67px;
        }
        .box div .info{
            color:red;
            margin-top:16px;
            padding-left:2px;
        }
        .button{
            margin-top:7px;
        }
        .button a{
            display: block;
            text-align: center;
            height:45px;
            line-height:45px;
            background-color: #f20d0d;
            border-radius:20px;
            color:#fff;
            font-size:16px;
        }
    </style>
</head>
<body>
    <div class="box">
        <p class="title">
            <span>登 錄</span>
            <span class="current">註 冊</span>
        </p>
        <div>
            <span>+86</span>
            <input type="text" name="user" id="user" placeholder="請輸入註冊手機號" autocomplete="off">
            <i class="ok"></i>
            <p class="info">該手機號已註冊</p>
        </div>
        <div>
            <input type="password" name="pwd" id="pwd" placeholder="請設置密碼" autocomplete="off">
            <i class="no"></i>
            <p class="info"></p>
        </div>
        <p class="button">
            <a href="javascript:void(0)" id="btn" class="btn">註冊</a>
        </p>
    </div>
    <script src="ajax.js"></script>
</body>
</html>

效果圖

 

 然後是仿照jquery的$.ajax(),使用js封裝了一個ajax方法(只是為了熟悉運行原理,實際項目可以直接用jquery封裝好的)

ajax.js

//仿寫jquery的ajax方法
var $={
    ajax:function(options){
        var xhr=null;//XMLHttpRequest對象
        var url=options.url,//必填
            type=options.type || "get",
            async=typeof(options.async)==="undefined"?true:options.async,
            data=options.data || null, 
            params="",//傳遞的參數
            callback=options.success,//成功的回調
            error=options.error;//失敗的回調

        //post傳參的轉換,將對象字面量形式轉為字元串形式
        // data:{user:"13200000000",pwd:"123456"}
        // xhr.send("user=13200000000&pwd=123456")
        if(data){
            for(var i in data){
                params+=i+"="+data[i]+"&";
            }
            params=params.replace(/&$/,"");//正則替換,以&結尾的將&轉為空
        }

        //根據type值修改傳參
        if(type==="get"){
            url+="?"+params;
        }
        console.log(url);

        //IE7+,其他瀏覽器
        if(typeof XMLHttpRequest!="undefined"){
            xhr=new XMLHttpRequest();//返回xhr對象的實例
        }else if(typeof ActiveXObject!="undefined"){
            //IE7及以下
            //所有可能出現的ActiveXObject版本
            var arr=["Microsoft.XMLHTTP","MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP.2.0"];
            //迴圈
            for(var i=0,len=arr.length;i<len;i++){
                try{
                    xhr=new ActiveXObject(arr[i]);//任意一個版本支持,即可退出迴圈
                    break;
                }catch(e){

                }
            }
        }else{
            //都不支持
            throw new Error("您的瀏覽器不支持XHR對象!");
        }

        //響應狀態變化的函數
        xhr.onreadystatechange=function(){
            if(xhr.readyState===4){
                if((xhr.status>=200&&xhr.status<300) || xhr.status===304){
                    callback&&callback(JSON.parse(xhr.responseText));//如果存在回調則執行回調
                }else{
                    error&&error();
                }
            }
        }

        //創建HTTP請求
        xhr.open(type,url,async);
        //設置HTTP頭
        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        //發送請求
        xhr.send(params);
    },
  jsonp:function(){

  }
}

下麵放出所有代碼:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        body{
            background-color: #333;
        }
        a{
            text-decoration: none;
        }
        .box{
            width:300px;
            height:270px;
            margin:80px auto;
            background-color: #abcdef;
            border-radius: 5px;
            padding:15px 30px;
        }
        .box .title{
            height:15px;
            margin-bottom:20px;
        }
        .box .title span{
            font-size:16px;
            color:#333;
            margin-right:15px;
            cursor:pointer;
        }
        .box .title span.current{
            color:red;
        }
        .box div{
            width:280px;
            height:30px;
            margin-bottom:25px;
            padding:8px 10px;
            background-color: #fff;
            border-radius: 5px;
            color:#666;
            position: relative;
        }
        .box div span{
            display: inline-block;
            padding-top:4px;
            padding-right:6px;
        }
        .box div input{
            border:none;
            outline:none;
            font-size:16px;
            color:#666;
            margin-top:5px;
        }
        .box div i{
            width:16px;
            height:16px;
            position: absolute;
            top:14px;
            right:12px;
        }
        .box div i.ok{
            background:url(icon.png) no-repeat 0 -67px;
        }
        .box div i.no{
            background:url(icon.png) no-repeat -17px -67px;
        }
        .box div .info{
            color:red;
            margin-top:16px;
            padding-left:2px;
        }
        .button{
            margin-top:7px;
        }
        .button a{
            display: none;
            text-align: center;
            height:45px;
            line-height:45px;
            background-color: #f20d0d;
            border-radius:20px;
            color:#fff;
            font-size:16px;
        }
        .button a.show{
            display: block;
        }
    </style>
</head>
<body>
    <div class="box">
        <p class="title" id="title">
            <span>登 錄</span>
            <span class="current">註 冊</span>
        </p>
        <div>
            <span>+86</span>
            <input type="text" name="user" id="user" placeholder="請輸入註冊手機號" autocomplete="off" data-check="reg">
            <i id="userIco"></i>
            <p class="info" id="userInfo"></p>
        </div>
        <div>
            <input type="password" name="pwd" id="pwd" placeholder="請設置密碼" autocomplete="off">
            <i id="pwdIco"></i>
            <p class="info" id="pwdInfo"></p>
        </div>
        <p class="button">
            <a href="javascript:void(0)" id="btn" class="btn show">註冊</a>
            <a href="javascript:void(0)" id="btn2" class="btn">登錄</a>
        </p>
    </div>
    <script src="ajax.js"></script>
    <script>
        var user=document.getElementById("user"),
            userIco=document.getElementById("userIco"),
            userInfo=document.getElementById("userInfo"),
            pwd=document.getElementById("pwd"),
            pwdIco=document.getElementById("pwdIco"),
            pwdInfo=document.getElementById("pwdInfo"),
            btn=document.getElementById("btn"),
            btn2=document.getElementById("btn2"),
            title=document.getElementById("title").getElementsByTagName("span"),
            userPattern=/^[1]\d{10}$/,//手機號格式的正則,
            pwdPattern=/^\w{5,10}$/,
            isRepeat=false;//預設不重覆

        
              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 開始學習資料庫的理論知識,
  • 一,連接池的配置 在pom.xml中添加,druid的maven信息 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> ...
  • HDFS(Hadoop Distributed File System) 分散式文件系統,HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用.由NameNode,若幹DataNode,以及Secondary NameNode組成。 ...
  • 在現版本中,滾動控制項有多種,而相比於ListView,GridView,RecyclerView的用途更廣,因此將前兩者作為Adapter適配器的引入,再對RecyclerView進行簡單講解。 MVC & Adapter 為了方便理解,這裡介紹一下Android應用設計的基礎,也就是MVC架構, ...
  • 1、點擊上傳 2、填寫版本號、備註 3、https://mp.weixin.qq.com/回到微信公眾平臺,點擊版本管理就可以看到開發版本 4、點擊提交審核(提交之前填寫小程式基本資料,才可提交審核),接著配置功能頁面。 5、點擊提交審核之後在審核版本模塊中會出現項目信息(人工介入審核,審核成功之後 ...
  • 介紹馬蜂窩如何通過 App 地理相冊空間索引的應用,為用戶提供直觀、好用的圖片分享服務。 ...
  • 首先我們看ListView實現之後的的效果,如下圖所示: 現在我們來看看如何來實現這個可以進行上下活動的ListView: 首先是主界面Activity_Main.xml的代碼: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:a ...
  • css3和css有什麼區別?首先css33是css(層疊樣式表)技術的升級版本,而css是一種用來表現HTML(標準通用標記語言的一個應用)或XML(標準通用標記語言的一個子集)等文件樣式的電腦語言。然後是內容上css3主要包括盒子模型、列表模塊、超鏈接方式、語言模塊、背景和邊框、文字特效、多欄布... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...