亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

初識--Ajax&Json

2019-11-14 16:00:18
字體:
來源:轉載
供稿:網友

1,Ajax是一種進行頁面局部異步刷新技術。

  用AJAX向服務器發送請求和獲得服務器返回的數據并更新到頁面中。

  不是刷新整個頁面,而是在HTML頁面中使用javaScript創建xmlHTTPRequest對象向服務器發出請求以及獲得返回的數據。

  常見例子:帖子評論、視頻下的評論,我們提交評論以后不會有整個HTML頁面的刷新,不會有視頻的中斷。

2,我們借助Nvelocity模板引擎寫一個一般處理程序,實現評論中常見的 [贊、踩] 功能。

  Demo 下載 (1,Demo中的視頻需自行添加  2,方便排版Demo中用了Bootstrap, 可參考http://www.bootCSS.com/)

  我們發現,每次點擊 贊或踩 頁面都重新刷新了一次,正在播放的視頻也重新播放了。

  

3,我們再用Ajax實現點擊顯示點贊次數。

  新建CommentByAjax.html,頁面中給按鈕 “贊” 添加 onclick方法 , onclick方法中 通過Javascript創建xmlhttpRequest對象向服務器端的一般處理程序請求處理結果。

  處理結果返回到html頁面并顯示,這樣整個過程沒有刷新頁面,只是通過XMLHTTPRequest對象請求了點贊次數,實現了局部刷新。

  效果如下:連續點贊 頁面顯示點贊次數遞增,視頻沒有中斷或者重播。

  

  步驟:A, 新建CommnetByAJAX.html頁面,并添加 javascript 方法創建XMLHTTPRequest對象請求服務器 

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title>    <!-- Bootstrap -->    <link href="css/bootstrap.min.css" rel="stylesheet">    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->    <!--[if lt IE 9]>      <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>      <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>    <![endif]-->    <script type="text/javascript">        function AddZan() {            var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //創建XMLHTTP對象,考慮兼容性            xmlhttp.open("POST", "ZanCaiCount.ashx?" + "Action=Zan", true); //“準備”向服務器的ZanCaiCount.ashx發出Post請求(GET可能會有緩存問題)。這里還沒有發出請求            xmlhttp.onreadystatechange = function () {                if (xmlhttp.readyState == 4) //readyState == 4 表示服務器返回完成數據了。之前可能會經歷2(請求已發送,正在處理中)、3(響應中已有部分數據可用了,但是服務器還沒有完成響應的生成)                {                    if (xmlhttp.status == 200) //如果狀態碼為200則是成功                    {                        document.getElementById("ZanNum").innerHTML = xmlhttp.responseText;                    }                    else {                        alert("AJAX服務器返回錯誤!");                    }                }            }            //不要以為if (xmlhttp.readyState == 4) {在send之前執行?。。?!            xmlhttp.send(); //這時才開始發送請求            //發出請求后不等服務器返回數據,就繼續向下執行,所以不會阻塞,界面就不卡了,這就是AJAX中“A”的含義“異步”。試著在ashx加一句Thread.Sleep(3000);        }    </script></head><body>    <form action="CountComments.ashx" method="post">        <div class="row">            <div class="col-md-1"></div>            <div class="col-md-5">                <video src="./Surface%20Pro%203.mp4" autoplay="autoplay" width="320" height="240" controls="controls" />            </div>            <div class="col-md-6"></div>        </div>        <div class="row">            <div class="col-md-1"></div>            <div class="col-md-1">                <input type="button" name="Zan" value="" onclick="AddZan()" /><label id="ZanNum"></label>            </div>            <div class="col-md-1">                <input type="button" name="Cai" value="" onclick="AddCai()" /><label id="CaiNum"></label>            </div>            <div class="col-md-9"></div>        </div>    </form>    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->    <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>    <!-- Include all compiled plugins (below), or include individual files as needed -->    <script src="js/bootstrap.min.js"></script></body>
View Code

     B, 添加 點贊、點踩 計算的一般處理程序: ZanCai.ashx ,接收CommentByAJAX.html傳遞過來的參數(Zan/Cai)計算次數,并返回

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace AjaxDemo{    /// <summary>    /// ZanCaiCount 的摘要說明    /// </summary>    public class ZanCaiCount : IHttpHandler    {        private static int numZan = 0;        private static int caiNum = 0;        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/html";            //根據Action參數判斷是贊 還是 踩            string strAction = context.Request.QueryString["Action"];            if (strAction == "Zan")            {                numZan++;                context.Response.Write(numZan.ToString());     //輸出            }            else if (strAction == "Cai")            {                caiNum++;                context.Response.Write(caiNum.ToString());     //輸出            }        }        public bool IsReusable        {            get            {                return false;            }        }    }}
View Code

     C, 以上完成了AJAX請求點贊次數。 整個過程主要就是 javascript方法創建XMLHTTPRequest對象向服務器請求數據,如下代碼:

<script type="text/javascript">        function AddZan() {            var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //創建XMLHTTP對象,考慮兼容性            xmlhttp.open("POST", "ZanCaiCount.ashx?" + "Action=Zan", true); //“準備”向服務器的ZanCaiCount.ashx發出Post請求(GET可能會有緩存問題)。這里還沒有發出請求            xmlhttp.onreadystatechange = function () {                if (xmlhttp.readyState == 4) //readyState == 4 表示服務器返回完成數據了。之前可能會經歷2(請求已發送,正在處理中)、3(響應中已有部分數據可用了,但是服務器還沒有完成響應的生成)                {                    if (xmlhttp.status == 200) //如果狀態碼為200則是成功                    {                        document.getElementById("ZanNum").innerHTML = xmlhttp.responseText;                    }                    else {                        alert("AJAX服務器返回錯誤!");                    }                }            }            //不要以為if (xmlhttp.readyState == 4) {在send之前執行?。。?!            xmlhttp.send(); //這時才開始發送請求            //發出請求后不等服務器返回數據,就繼續向下執行,所以不會阻塞,界面就不卡了,這就是AJAX中“A”的含義“異步”。試著在ashx加一句Thread.Sleep(3000);        }    </script>

 4, 我們把上面一段JavaScript方法封裝到js文件中, 方便以后調用。

  步驟: A, js文件夾下添加 ajax.js

function ajax(url, onsuccess) {    var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //創建XMLHTTP對象,考慮兼容性    xmlhttp.open("POST", url, true); //“準備”向服務器的ZanCaiCount.ashx發出Post請求(GET可能會有緩存問題)。這里還沒有發出請求    xmlhttp.onreadystatechange = function () {        if (xmlhttp.readyState == 4) //readyState == 4 表示服務器返回完成數據了。之前可能會經歷2(請求已發送,正在處理中)、3(響應中已有部分數據可用了,但是服務器還沒有完成響應的生成)        {            if (xmlhttp.status == 200) //如果狀態碼為200則是成功            {                onsuccess(xmlhttp.responseText);                //document.getElementById("ZanNum").innerHTML = xmlhttp.responseText;            }            else {                alert("AJAX服務器返回錯誤!");            }        }    }    //不要以為if (xmlhttp.readyState == 4) {在send之前執行!?。。?/span>    xmlhttp.send(); //這時才開始發送請求    //發出請求后不等服務器返回數據,就繼續向下執行,所以不會阻塞,界面就不卡了,這就是AJAX中“A”的含義“異步”。試著在ashx加一句Thread.Sleep(3000);}
View Code

     B, CommnetByAJAX.html頁面添加對ajax的引用 并 實現點擊 “踩”的時候顯示次數

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title>    <!-- Bootstrap -->    <link href="css/bootstrap.min.css" rel="stylesheet">    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->    <!--[if lt IE 9]>      <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>      <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>    <![endif]-->    <script src="js/ajax.js"></script>    <script type="text/javascript">        function AddZan() {            var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //創建XMLHTTP對象,考慮兼容性            xmlhttp.open("POST", "ZanCaiCount.ashx?" + "Action=Zan", true); //“準備”向服務器的ZanCaiCount.ashx發出Post請求(GET可能會有緩存問題)。這里還沒有發出請求            xmlhttp.onreadystatechange = function () {                if (xmlhttp.readyState == 4) //readyState == 4 表示服務器返回完成數據了。之前可能會經歷2(請求已發送,正在處理中)、3(響應中已有部分數據可用了,但是服務器還沒有完成響應的生成)                {                    if (xmlhttp.status == 200) //如果狀態碼為200則是成功                    {                        document.getElementById("ZanNum").innerHTML = xmlhttp.responseText;                    }                    else {                        alert("AJAX服務器返回錯誤!");                    }                }            }            //不要以為if (xmlhttp.readyState == 4) {在send之前執行!?。?!            xmlhttp.send(); //這時才開始發送請求            //發出請求后不等服務器返回數據,就繼續向下執行,所以不會阻塞,界面就不卡了,這就是AJAX中“A”的含義“異步”。試著在ashx加一句Thread.Sleep(3000);        }        function AddCai() {            ajax("ZanCaiCount.ashx?action=Cai", function (result) { document.getElementById("CaiNum").innerHTML = result })        }    </script></head><body>    <form action="CountComments.ashx" method="post">        <div class="row">            <div class="col-md-1"></div>            <div class="col-md-5">                <video src="./Surface%20Pro%203.mp4" autoplay="autoplay" width="320" height="240" controls="controls" />            </div>            <div class="col-md-6"></div>        </div>        <div class="row">            <div class="col-md-1"></div>            <div class="col-md-1">                <input type="button" name="Zan" value="" onclick="AddZan()" /><label id="ZanNum"></label>            </div>            <div class="col-md-1">                <input type="button" name="Cai" value="" onclick="AddCai()" /><label id="CaiNum"></label>            </div>            <div class="col-md-9"></div>        </div>    </form>    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->    <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>    <!-- Include all compiled plugins (below), or include individual files as needed -->    <script src="js/bootstrap.min.js"></script></body>
View Code

  點贊點踩效果如下

  

 

 5, AJAX的經常用在網站新用戶注冊的時候,檢查用戶名稱是否存在。

   

  步驟: A, 添加新用戶注冊頁面,頁面中用戶名文本框中添加onbluer()事件,鼠標焦點離開以后觸發檢查用戶民是否存在

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title>新用戶注冊</title>    <link href="css/bootstrap.min.css" rel="stylesheet">    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->    <!--[if lt IE 9]>      <script src="http://cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>      <script src="http://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>    <![endif]-->    <script src="js/ajax.js"></script>    <script type="text/javascript">        function checkIfExist() {            ajax("RegCheckNewUserName.ashx?NewName=" + document.getElementById("NewName").value, function (result) { document.getElementById(ReminderInfo.innerHTML = result) });        }    </script></head><body>    <form method="post">        <div class="row">            <div class="col-md-1"></div>            <div class="col-md-1">用戶名:</div>            <div class="col-md-2">                <input type="text" id="NewName" name="NewUserName" onblur="checkIfExist()" />            </div>            <div class="col-md-4">                <label id="ReminderInfo"></label>            </div>            <div class="col-md-3"></div>        </div>        <div class="row">            <div class="col-md-1"></div>            <div class="col-md-1">密碼:</div>            <div class="col-md-2">                <input type="passWord" name="pwd" />            </div>            <div class="col-md-8"></div>        </div>        <div class="row">            <div class="col-md-1"></div>            <div class="col-md-1">                <input type="submit" name="btnRegister" value="注冊" />            </div>            <div class="col-md-10"></div>        </div>    </form>    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->    <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script>    <!-- Include all compiled plugins (below), or include individual files as needed -->    <script src="js/bootstrap.min.js"></script></body></html>
View Code

      B, 添加檢查用戶名稱是否存在的一般處理程序 

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace AjaxDemo{    /// <summary>    /// RegCheckNewUserName 的摘要說明    /// </summary>    public class RegCheckNewUserName : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/html";            //檢查傳遞過來的參數是否存在            //新建數組存儲部分用戶名            List<string> strExist = new List<string> { "橙子", "柚子", "西瓜", "荔枝", "蘋果", "葡萄", "火龍果" };            if (string.IsNullOrEmpty(context.Request["NewName"]))            {                context.Response.Write("用戶名為空哦,請您填寫用戶名");            }            else            {                string strUserName = context.Request["NewName"].ToString();                if (strExist.Contains(strUserName))                {                    //已經存在                    context.Response.Write("用戶名已存在,請重新選擇用戶名");                }                else                {                    context.Response.Write("恭喜您,此用戶名可以注冊");                }            }        }        public bool IsReusable        {            get            {                return false;            }        }    }}
View Code

 6, 以上我們借助AJAX進行簡單的數據傳輸,但是我們還會有一些復雜的數據請求需要借助AJAX完成。

  例如,輸入員工工號以后,通過AJAX請求出來該工號對應的基本信息(姓名、性別、年齡、郵箱、電話號碼、戶籍、愛好等)

  這樣,我們請求頁面傳遞工號參數,AJAX請求的一般處理程序頁面讀取相關數據以后返回,這些數據就需要一定的格式給請求頁面以方便請求頁面解析讀取各個字段屬性,這樣的解析我們借助Json就會更加方便了。

7,Json,是一種輕量級的數據交換格式,方便機器進行解析和生成,同時讓人們很容易的閱讀和編寫。Json是幾乎被所有的語言支持的。

  我們新建一般處理程序,輸出一個數組對象,看看Json輸出的格式是怎樣的:

  步驟:A, 新建Person類 

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace AjaxDemo{    public class Person    {        public string Name { get; set; }        public string Age { get; set; }        public string Gender { get; set; }        public string Email { get; set; }        public string Address { get; set; }    }}
View Code

     B, 添加JsonOutPut.ashx一般處理程序,程序中我們借助JavascriptSerializer把Person數組對象以Json格式輸出

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Script.Serialization;namespace AjaxDemo{    /// <summary>    /// JsonOutput 的摘要說明    /// </summary>    public class JsonOutput : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/html";            //定義Person對象的數組            List<Person> perList = new List<Person>();            perList.Add(new Person() { Name = "橙子", Age = "18", Gender = "M", Email = "Orange@163.com", Address = "上海" });            perList.Add(new Person() { Name = "蘋果", Age = "17", Gender = "F", Email = "Apple@163.com", Address = "北京" });            perList.Add(new Person() { Name = "椰子", Age = "20", Gender = "F", Email = "CocoNut@163.com", Address = "廣州" });            //以Json格式字符串把 perList進行輸出            //------1,初始化一個JavaScriptSerializer對象            JavaScriptSerializer jss = new JavaScriptSerializer();            //------2,獲得一個對象的Json格式            string JsonList = jss.Serialize(perList);            context.Response.Write(JsonList);        }        public bool IsReusable        {            get            {                return false;            }        }    }}
View Code

     C, Json格式輸出,這樣的字符串格式就很清晰明了,方便讀取

 8,上面返回的Json字符串,在HTML頁面中我們怎么去解析呢 ?也就是咋么去讀取Name或者Age屬性呢 ?

  HTMl頁面中就需要借助Json.Parse把Json字符串解析成對象 

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    <title></title>    <script src="js/ajax.js"></script>    <script type="text/javascript">        function readjsonlist() {            ajax("JsonOutput.ashx", function (result) {                var pers = JSON.parse(result);                for (var i = 0; i < pers.length; i++) {                    var p = pers[i];                    alert("姓名:" + p.Name + "年齡:" + p.Age);                }            });        }    </script></head><body>    <input type="button" onclick="readjsonlist()" value="點擊查看數組對象" /></body></html>
View Code 
<script src="js/ajax.js"></script>    <script type="text/javascript">        function readjsonlist() {            ajax("JsonOutput.ashx", function (result) {                var pers = JSON.parse(result);                for (var i = 0; i < pers.length; i++) {                    var p = pers[i];                    alert("姓名:" + p.Name + "年齡:" + p.Age);                }            });        }    </script>

  

 

  

 

 

 

 

參考網站:Bootstrap  http://www.bootcss.com/

完整Demo下載

     


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品免费在线观看| 日韩成人在线电影网| 国产深夜精品福利| 欧美一级淫片丝袜脚交| 成人网欧美在线视频| 亚洲精品美女在线观看播放| 日韩风俗一区 二区| 久久人人爽人人爽人人片av高请| 欧美乱大交做爰xxxⅹ性3| 九九精品在线播放| 欧美资源在线观看| 91精品国产电影| 欧美成人精品在线观看| 国产a级全部精品| 成人久久一区二区| 欧美激情久久久| 国产精品电影网| 欧美—级高清免费播放| 精品丝袜一区二区三区| 亚洲女同性videos| 97精品在线观看| 97免费视频在线| 海角国产乱辈乱精品视频| 久久不射热爱视频精品| 成人福利视频在线观看| 91高清免费在线观看| 亚洲男人天堂2024| 亚洲国产天堂网精品网站| 中文字幕av一区| 亚洲美女又黄又爽在线观看| 91人成网站www| 亚洲自拍偷拍色片视频| 国产91精品久| 色妞色视频一区二区三区四区| 亚洲第一在线视频| 青青a在线精品免费观看| 欧美精品在线免费播放| 国产日韩精品在线| 国产精品免费久久久| 性日韩欧美在线视频| 亚洲人成欧美中文字幕| 国产在线视频不卡| 国产精品视频不卡| 国产精品最新在线观看| 国产精品白丝av嫩草影院| 欧美最顶级的aⅴ艳星| 精品国产欧美一区二区三区成人| 国产精品极品美女粉嫩高清在线| 成人在线中文字幕| 亚洲日韩中文字幕| 97国产suv精品一区二区62| 国产精品亚洲美女av网站| 久久午夜a级毛片| 日本不卡免费高清视频| 国产精品福利在线观看| 久久香蕉精品香蕉| 国产日韩精品综合网站| 亚洲乱码国产乱码精品精天堂| 亚洲第一精品福利| 国产日产欧美a一级在线| 国产一区二区在线免费| 国产精品视频一区二区三区四| 色偷偷88888欧美精品久久久| 欧美日韩国产一中文字不卡| 一区二区三区天堂av| 亚洲影院高清在线| 欧美电影院免费观看| 亚洲男人的天堂网站| 国内精品久久久久久中文字幕| 久久久精品国产网站| 色综合久久中文字幕综合网小说| 黑人巨大精品欧美一区二区| 亚洲激情在线观看视频免费| 91在线观看免费高清完整版在线观看| 91欧美激情另类亚洲| 亚洲国产精品久久久| 91亚洲国产精品| 欧美做受高潮1| 亚洲欧美国产精品va在线观看| 日韩在线视频导航| 亚洲成人av在线播放| 91国产美女视频| 在线观看亚洲区| 亚洲淫片在线视频| 欧美激情视频在线| 成人免费观看49www在线观看| 欧美性猛交视频| 成人久久久久爱| 亚洲自拍中文字幕| 欧洲成人性视频| 伊人久久久久久久久久| 68精品国产免费久久久久久婷婷| 亚洲аv电影天堂网| 久久久久久九九九| 91精品中文在线| 精品久久在线播放| 日本午夜精品理论片a级appf发布| 国产亚洲精品美女| 欧美性videos高清精品| 色777狠狠综合秋免鲁丝| 亚洲成人精品久久| 在线电影av不卡网址| 97久久超碰福利国产精品…| 欧美日韩成人在线观看| 日韩中文字幕久久| 亚洲人在线视频| 欧美日韩一区二区免费视频| 亚洲免费影视第一页| 成人两性免费视频| 91亚洲人电影| 国产97在线观看| 91精品在线观看视频| 欧美午夜精品伦理| 亚洲欧美中文日韩v在线观看| 国产一区二区丝袜高跟鞋图片| 日韩av片免费在线观看| 亚洲第一视频网| 日韩电影中文字幕在线观看| 中文字幕日韩欧美在线视频| 久久久久久久国产| 最近2019中文字幕第三页视频| 欧美午夜女人视频在线| 日韩高清av一区二区三区| 亚洲毛片在线看| 欧美日韩国产成人在线| 国产欧美一区二区三区久久人妖| 人人做人人澡人人爽欧美| 欧美成人高清视频| 亚洲精品视频免费在线观看| 91在线观看免费高清完整版在线观看| 亚洲加勒比久久88色综合| 日韩美女在线播放| 亚洲xxxx18| 国产999在线| 中文字幕亚洲在线| 日韩暖暖在线视频| 九九九热精品免费视频观看网站| 国产一区二区三区精品久久久| 97精品在线视频| 欧美激情亚洲一区| 中文字幕精品—区二区| 5278欧美一区二区三区| 中文字幕一区二区三区电影| 秋霞av国产精品一区| 97超级碰在线看视频免费在线看| 成人看片人aa| 日韩欧美一区二区三区| 性色av一区二区三区红粉影视| 欧美猛交ⅹxxx乱大交视频| 色偷偷噜噜噜亚洲男人的天堂| 国产a级全部精品| 亚洲老头同性xxxxx| 国产一区玩具在线观看| 久久综合亚洲社区| 日韩av高清不卡| 欧美日韩国产999| 欧美午夜xxx| 久久久国产影院| 久久精品免费播放| 亚洲网址你懂得| 北条麻妃99精品青青久久| 亚洲美女视频网| 国模精品系列视频| 成人久久久久爱|