日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

實現(xiàn)AJAX異步調(diào)用和局部刷新的基本步驟

瀏覽:387日期:2022-06-12 09:51:10
目錄
  • 引言
  • 1、創(chuàng)建XMLHttpRequest對象
  • 2、創(chuàng)建HTTP請求
  • 3、設(shè)置響應(yīng)HTTP請求狀態(tài)變化的函數(shù)
  • 4、設(shè)置獲取服務(wù)器返回數(shù)據(jù)的語句
  • 5、發(fā)送HTTP請求
  • 6、局部更新
  • 7、完整的AJAX實例
  • 總結(jié)

引言

要完整實現(xiàn)一個AJAX異步調(diào)用和局部刷新,通常需要以下幾個步驟:

(1)創(chuàng)建XMLHttpRequest對象,也就是創(chuàng)建一個異步調(diào)用對象.

(2)創(chuàng)建一個新的HTTP請求,并指定該HTTP請求的方法、URL及驗證信息.

(3)設(shè)置響應(yīng)HTTP請求狀態(tài)變化的函數(shù).

(4)發(fā)送HTTP請求.

(5)獲取異步調(diào)用返回的數(shù)據(jù).

(6)使用JavaScript和DOM實現(xiàn)局部刷新.

1、創(chuàng)建XMLHttpRequest對象

不同的瀏覽器使用的異步調(diào)用對象也有所不同,在IE瀏覽器中異步調(diào)用使用的是XMLHTTP組件中的XMLHttpRequest對象,而在Netscape、Firefox瀏覽器中則直接使用XMLHttpRequest組件。因此,在不同瀏覽器中創(chuàng)建XMLHttpRequest對象的方式都有所不同.

在IE瀏覽器中創(chuàng)建XMLHttpRequest對象的方式如下所示:

    var xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");

在Netscape瀏覽器中創(chuàng)建XMLHttpRequest對象的方式如下所示:

    var xmlHttpRequest = new XMLHttpRequest();

由于無法確定用戶使用的是什么瀏覽器,所以在創(chuàng)建XMLHttpRequest對象時,最好將以上兩種方法都加上.如以下代碼所示:

<html>
???<head>
??????<title>創(chuàng)建XMLHttpRequest對象</title>
??????<script language = "javascript" type = "text/javascript">
??????<!--
??????var xmlHttpRequest;??//定義一個變量,用于存放XMLHttpRequest對象
??????function createXMLHttpRequest()????//創(chuàng)建XMLHttpRequest對象的方法
??????{
	??????if(window.ActiveXObject)???//判斷是否是IE瀏覽器
	??????{
	?????????xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");??//創(chuàng)建IE瀏覽器中的XMLHttpRequest對象
	??????}
	??????else if(window.XMLHttpRequest)????//判斷是否是Netscape等其他支持XMLHttpRequest組件的瀏覽器
	??????{
	????????? xmlHttpRequest = new XMLHttpRequest();??//創(chuàng)建其他瀏覽器上的XMLHttpRequest對象
	??????}
	????}
?????? -->
??????</script>
??????createXMLHttpRequst();???//調(diào)用創(chuàng)建對象的方法
????</head>
<body>
</body>

</html>

"if(window.ActiveXObject)"用來判斷是否使用IE瀏覽器.其中ActiveXOject并不是Windows對象的標準屬性,而是IE瀏覽器中專有的屬性,可以用于判斷瀏覽器是否支持ActiveX控件.通常只有IE瀏覽器或以IE瀏覽器為核心的瀏覽器才能支持Active控件.

"else if(window.XMLHttpRequest)"是為了防止一些瀏覽器既不支持ActiveX控件,也不支持XMLHttpRequest組件而進行的判斷.其中XMLHttpRequest也不是window對象的標準屬性,但可以用來判斷瀏覽器是否支持XMLHttpRequest組件.

如果瀏覽器既不支持ActiveX控件,也不支持XMLHttpRequest組件,那么就不會對xmlHttpRequest變量賦值.

2、創(chuàng)建HTTP請求

創(chuàng)建了XMLHttpRequest對象之后,必須為XMLHttpRequest對象創(chuàng)建HTTP請求,用于說明XMLHttpRequest對象要從哪里獲取數(shù)據(jù).通常可以是網(wǎng)站中的數(shù)據(jù),也可以是本地中其他文件中的數(shù)據(jù).

創(chuàng)建HTTP請求可以使用XMLHttpRequest對象的open()方法,其語法代碼如下所示:

XMLHttpRequest.open(method,URL,flag,name,password)

代碼中的參數(shù)解釋如下所示:

method:該參數(shù)用于指定HTTP的請求方法,一共有g(shù)et、post、head、put、delete五種方法,常用的方法為get和post。

URL:該參數(shù)用于指定HTTP請求的URL地址,可以是絕對URL,也可以是相對URL。

flag:該參數(shù)為可選參數(shù),參數(shù)值為布爾型。該參數(shù)用于指定是否使用異步方式。true表示異步方式、false表示同步方式,默認為true。

name:該參數(shù)為可選參數(shù),用于輸入用戶名。如果服務(wù)器需要驗證,則必須使用該參數(shù)。

password:該參數(shù)為可選參數(shù),用于輸入密碼。如果服務(wù)器需要驗證,則必須使用該參數(shù)。通常可以使用以下代碼來訪問一個網(wǎng)站文件的內(nèi)容。

xmlHttpRequest.open("get","http://www.aspxfans.com/BookSupport/JavaScript/ajax.htm",true);

或者使用以下代碼來訪問一個本地文件內(nèi)容:

xmlHttpRequest.open("get","ajax.htm",true);

注意:如果HTML文件放在Web服務(wù)器上,在Netscape瀏覽器中的JavaScript安全機制不允許與本機之外的主機進行通信。也就是說,使用open()方法只能打開與HTML文件在同一個服務(wù)器上的文件。而在IE瀏覽器中則無此限制(雖然可以打開其他服務(wù)器上的文件,但也會有警告提示)。

3、設(shè)置響應(yīng)HTTP請求狀態(tài)變化的函數(shù)

創(chuàng)建完HTTP請求之后,應(yīng)該就可以將HTTP請求發(fā)送給Web服務(wù)器了。然而,發(fā)送HTTP請求的目的是為了接收從服務(wù)器中返回的數(shù)據(jù)。從創(chuàng)建XMLHttpRequest對象開始,到發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、XMLHttpRequest對象一共會經(jīng)歷以下5中狀態(tài)。

       ⑴未初始化狀態(tài)。在創(chuàng)建完XMLHttpRequest對象時,該對象處于未初始化狀態(tài),此時XMLHttpRequest對象的readyState屬性值為0。

       ⑵初始化狀態(tài)。在創(chuàng)建完XMLHttpRequest對象后使用open()方法創(chuàng)建了HTTP請求時,該對象處于初始化狀態(tài)。此時XMLHttpRequest對象的readyState屬性值為1。

       ⑶發(fā)送數(shù)據(jù)狀態(tài)。在初始化XMLHttpRequest對象后,使用send()方法發(fā)送數(shù)據(jù)時,該對象處于發(fā)送數(shù)據(jù)狀態(tài),此時XMLHttpRequest對象的readyState屬性值為2。

       ⑷接收數(shù)據(jù)狀態(tài)。Web服務(wù)器接收完數(shù)據(jù)并進行處理完畢之后,向客戶端傳送返回的結(jié)果。此時,XMLHttpRequest對象處于接收數(shù)據(jù)狀態(tài),XMLHttpRequest對象的readyState屬性值為3。

       ⑸完成狀態(tài)。XMLHttpRequest對象接收數(shù)據(jù)完畢后,進入完成狀態(tài),此時XMLHttpRequest對象的readyState屬性值為4。此時接收完畢后的數(shù)據(jù)存入在客戶端計算機的內(nèi)存中,可以使用responseText屬性或responseXml屬性來獲取數(shù)據(jù)。

只有在XMLHttpRequest對象完成了以上5個步驟之后,才可以獲取從服務(wù)器端返回的數(shù)據(jù)。因此,如果要獲得從服務(wù)器端返回的數(shù)據(jù),就必須要先判斷XMLHttpRequest對象的狀態(tài)。

XMLHttpRequest對象可以響應(yīng)readystatechange事件,該事件在XMLHttpRequest對象狀態(tài)改變時(也就是readyState屬性值改變時)激發(fā)。因此,可以通過該事件調(diào)用一個函數(shù),并在該函數(shù)中判斷XMLHttpRequest對象的readyState屬性值。如果readyState屬性值為4則使用responseText屬性或responseXml屬性來獲取數(shù)據(jù)。具體代碼如下所示:

//設(shè)置當XMLHttpRequest對象狀態(tài)改變時調(diào)用的函數(shù),注意函數(shù)名后面不要添加小括號
xmlHttpRequest.onreadystatechange = getData;
//定義函數(shù)
function getData()
{
???//判斷XMLHttpRequest對象的readyState屬性值是否為4,如果為4表示異步調(diào)用完成
???if(xmlHttpRequest.readyState == 4)
???{
???/設(shè)置獲取數(shù)據(jù)的語句
???}
}

4、設(shè)置獲取服務(wù)器返回數(shù)據(jù)的語句

如果XMLHttpRequest對象的readyState屬性值等于4,表示異步調(diào)用過程完畢,就可以通過XMLHttpRequest對象的responseText屬性或responseXml屬性來獲取數(shù)據(jù)。

但是,異步調(diào)用過程完畢,并不代表異步調(diào)用成功了,如果要判斷異步調(diào)用是否成功,還要判斷XMLHttpRequest對象的status屬性值,只有該屬性值為200,才表示異步調(diào)用成功,因此,要獲取服務(wù)器返回數(shù)據(jù)的語句,還必須要先判斷XMLHttpRequest對象的status屬性值是否等于200,如以下代碼所示:

if(xmlHttpRequst.status == 200)
??{
?????//使用以下語句將返回結(jié)果以字符串形式輸出
?????document.write(xmlHttpRequest.responseText);
?????//或者使用以下語句將返回結(jié)果以XML形式輸出
?????//document.write(xmlHttpRequest.responseXML);
??}	

注意:如果HTML文件不是在Web服務(wù)器上運行,而是在本地運行,則xmlHttpRequest.status的返回值為0。因此,如果該文件在本地運行,則應(yīng)該加上xmlHttpRequest.status == 0的判斷。

通常將以上代碼放在響應(yīng)HTTP請求狀態(tài)變化的函數(shù)體內(nèi),如以下代碼所示:

//設(shè)置當XMLHttpRequest對象狀態(tài)改變時調(diào)用的函數(shù),注意函數(shù)名后面不要添加小括號
xmlHttpRequest.onreadystatechange = getData;
//定義函數(shù)
??function getData()
??{
????//判斷XMLHttpRequest對象的readyState屬性值是否為4,如果為4表示異步調(diào)用完成
????if(xmlHttpRequest.readyState==4)
????{
???????//設(shè)置獲取數(shù)據(jù)的語句
???????if(xmlHttpRequest.status == 200 || xmlHttpRequest.status == 0)
???????{
??????????//使用以下語句將返回結(jié)果以字符串形式輸出
??????????document.write(xmlHttpRequest.responseText);
??????????//或者使用以下語句將返回結(jié)果以XML形式輸出
??????????//docunment.write(xmlHttpRequest.responseXML);
???????}
?????}
??}

5、發(fā)送HTTP請求

在經(jīng)過以上幾個步驟的設(shè)置之后,就可以將HTTP請求發(fā)送到Web服務(wù)器上去了。發(fā)送HTTP請求可以使用XMLHttpRequest對象的send()方法,其語法代碼如下所示:

XMLHttpRequest.send(data)

其中data是個可選參數(shù),如果請求的數(shù)據(jù)不需要參數(shù),即可以使用null來替代。data參數(shù)的格式與在URL中傳遞參數(shù)的格式類似,以下代碼為一個send()方法中的data參數(shù)的示例:

name=myName&value=myValue

只有在使用send()方法之后,XMLHttpRequest對象的readyState屬性值才會開始改變,也才會激發(fā)readystatechange事件,并調(diào)用函數(shù)。

6、局部更新

在通過Ajax的異步調(diào)用獲得服務(wù)器端數(shù)據(jù)之后,可以使用JavaScript或DOM來將網(wǎng)頁中的數(shù)據(jù)進行局部更新。常用的局部更新的方式有以下3種:

 ⑴表單對象的數(shù)據(jù)更新

表單對象的數(shù)據(jù)更新,通常只要更改表單對象的value屬性值,其語法代碼如下所示:

FormObject.value = "新數(shù)值"

有關(guān)表單對象的數(shù)據(jù)更新的示例如以下代碼所示:

 <html>
??<head>
??<title>局部更新</title>
??<script language = "javascript" type = "text/javascript">
??<!--
??function changeData()
??{
?????document.myForm.myText.value = "更新后的數(shù)據(jù)"
??}
??-->
??</head>
??<body>
?????<form name = "myForm">
?????<input type = "text" value = "原數(shù)據(jù)" name = "myText">
?????<input type = "button" value = "更新數(shù)據(jù)" onclick = "changeData()">
?????</form>
???</body>
</html>

⑵IE瀏覽器中標簽間文本的更新

在HTML代碼中,除了表單元素之外,還有很多其他的元素,這些元素的開始標簽與結(jié)束標簽之間往往也會有一點文字(如以下代碼所示),對這些文字的更新,也是局部更新的一部分。

<p>文字</p>
<span>文字</span>
<div>文字</div>
<label>文字</label>
<b>文字</b>
<i>文字</i>

在IE瀏覽器中,innerText或innerHTML屬性可以用來更改標簽間文本的內(nèi)容。其中innerText屬性用于更改開始標簽與結(jié)束標簽之間的純文本內(nèi)容,而innerHTML屬性用于更改HTML內(nèi)容。如以下代碼所示: 

<html>
<head>
<title>局部更新</title>
<script language = "javascript" type = "text/javascript">
????<!--
????function changeData()
????{
???????myDiv.innerText = "更新后的數(shù)據(jù)";
????}
????????????????????????????????? -->
</script>
</head>

<body>
???<div id = "myDive">原數(shù)據(jù)</div>
???<input type = "button" value = "更新數(shù)據(jù)" onclick = "changeData()">
</body>
</html>

 ⑶DOM技術(shù)的局部刷新

 innerText和innerHTML兩個屬性都是IE瀏覽器中的屬性,在Netscape瀏覽器中并不支持該屬性。但無論是IE瀏覽器還是Netscape瀏覽器,都支持DOM。在DOM中,可以修改標簽間的文本內(nèi)容。

在DOM中,將HTML文檔中的每一對開始標簽和結(jié)束標簽都看成是一個節(jié)點。例如HTML文檔中有一個標簽如下所示,那么該標簽在DOM中稱之為一個“節(jié)點”。

<div id = "myDiv">原數(shù)據(jù)</div>

 在DOM中使用getElementById()方法可以通過id屬性值來查找該標簽(或者說是節(jié)點),如以下語句所示:

var node = document.getElementById("myDiv");

注意:在一個HTML文檔中,每個標簽中的id屬性值是不能重復的。因此,使用getElementById()方法獲得的節(jié)點是唯一的。

 在DOM中,認為開始標簽與結(jié)束標簽之間的文本是該節(jié)點的子節(jié)點,而firstChild屬性可以獲得一個節(jié)點下的第1個子節(jié)點。如以下代碼可以獲得<div>節(jié)點下的第1個子節(jié)點,也就是<div>標簽與</div>標簽之間的文字節(jié)點。

node.firstChild

注意,以上代碼獲得的是文字節(jié)點,而不是文字內(nèi)容。如果要獲得節(jié)點的文字內(nèi)容,則要使用節(jié)點的nodeValue屬性。通過設(shè)置nodeValue屬性值,可以改變文字節(jié)點的文本內(nèi)容。完整的代碼如下所示:

<html>
<head>
<title>局部更新</title>
<script language = "javascript" type = "text/javascript">
<!--
??function changeData()
??{
??//查找標簽(節(jié)點)
??var node = document.getElementById("myDiv");
??//在DOM中標簽中的文字被認為是標簽中的子節(jié)點
??//節(jié)點的firstChild屬性為該節(jié)點下的第1個子節(jié)點
??//nodeValue屬性為節(jié)點的值,也就是標簽中的文本值
??node.firstChild.nodeValue = "更新后的數(shù)據(jù)";
??}
??-->
</script>
</head>
</html>

注意:目前主流的瀏覽器都支持DOM技術(shù)的局部刷新。

7、完整的AJAX實例

<html>
<head>
<title>AJAX實例</title>
<script language="javascript" type="text/javascript">????
?????????<!--

??????????var xmlHttpRequest;??//定義一個變量用于存放XMLHttpRequest對象
??????????//定義一個用于創(chuàng)建XMLHttpRequest對象的函數(shù)
??????????function createXMLHttpRequest()
??????????{
??????????if(window.ActiveXObject)
??????????{
??????????//IE瀏覽器的創(chuàng)建方式
??????????xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
?????????}else if(windew.XMLHttpRequest)
?????????{
?????????//Netscape瀏覽器中的創(chuàng)建方式
?????????xmlHttpRequest = new XMLHttpRequest();
?????????}
?????????}
?????????//響應(yīng)HTTP請求狀態(tài)變化的函數(shù)
?????????function httpStateChange()
?????????{
?????????//判斷異步調(diào)用是否完成
?????????if(xmlHttpRequest.readyState == 4)
?????????{
?????????//判斷異步調(diào)用是否成功,如果成功開始局部更新數(shù)據(jù)
?????????if(xmlHttpRequest.status == 200||xmlHttpRequest.status == 0)
?????????{
?????????//查找節(jié)點
?????????var node = document.getElementById("myDIv");

?????????//更新數(shù)據(jù)

????????? node.firstChild.nodeValue = xmlHttpRequest?.responseText;
?????????}
?????????else
?????????{
??????????//如果異步調(diào)用未成功,彈出警告框,并顯示出錯信息
????????? alert("異步調(diào)用出錯/n返回的HTTP狀態(tài)碼為:"+xmlHttpRequest.status + "/n返回的HTTP狀態(tài)信息為:" + xmlHttpRequest.statusText);
????????}
?????? }
???????}
???????//異步調(diào)用服務(wù)器段數(shù)據(jù)
?????? function getData(name,value)
??????{???????????????????
??????//創(chuàng)建XMLHttpRequest對象
??????createXMLHttpRequest();
??????if(xmlHttpRequest!=null)
??????{
??????//創(chuàng)建HTTP請求
??????xmlHttpRequest.open("get","ajax.text",true)
??????//設(shè)置HTTP請求狀態(tài)變化的函數(shù)
??????xmlHttpRequest.onreadystatechange = httpStateChange;
??????//發(fā)送請求
??????xmlHttpRequest.send(null);
??????}
???}
???-->
???</script>
</head>

<body>
???<div id="myDiv">原數(shù)據(jù)</div>
???<input type = "button" value = "更新數(shù)據(jù)" onclick = "getData()">
</body>
</html>

總結(jié)

到此這篇關(guān)于實現(xiàn)AJAX異步調(diào)用和局部刷新的基本步驟的文章就介紹到這了,更多相關(guān)實現(xiàn)AJAX的步驟內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標簽: Ajax
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩综合一区二区| 亚洲精品一区二区妖精| 日韩**一区毛片| 一本综合精品| 日韩午夜高潮| 亚洲久久一区| 黄色成人在线网址| 另类欧美日韩国产在线| 久久精品系列| 黑丝一区二区| 国产高清亚洲| 欧美另类专区| 久久久一本精品| 欧美成人基地| 国产一卡不卡| 午夜久久tv| 精品国产乱码久久久久久1区2匹| 久久精选视频| 国产精品a级| 视频一区在线播放| 日韩精品久久久久久久电影99爱| 亚洲综合欧美| 精品久久久网| 中文字幕免费精品| 久久要要av| 精品亚洲免a| 日本亚洲欧美天堂免费| 国产成人免费| 亚洲电影在线一区二区三区| 青草av.久久免费一区| 一区二区亚洲视频| 婷婷综合六月| 欧美69视频| 日本少妇一区| 视频二区不卡| 国产精品丝袜xxxxxxx| 日韩午夜av在线| 日韩av不卡一区二区| 日韩精品视频网站| 欧美日本久久| 免费在线亚洲欧美| 日产精品一区二区| 卡一精品卡二卡三网站乱码| 亚洲综合精品| 久久精品97| 久久久久亚洲精品中文字幕| 九九精品调教| 国产视频久久| 中文字幕中文字幕精品| 免费视频一区二区三区在线观看| 牛牛精品成人免费视频| 久久国产日本精品| 9国产精品视频| 性欧美69xoxoxoxo| 欧美一级一区| 欧美www视频在线观看| 在线亚洲欧美| 97久久亚洲| 国产一区二区三区免费在线| 中文字幕系列一区| 久热精品在线| 精品国产亚洲日本| 国产一区久久| 国产欧美日韩综合一区在线播放| 久久97视频| 日韩和的一区二在线| 日本成人在线网站| 精品视频网站| 久久国产精品亚洲77777| 国产日韩在线观看视频| 国产麻豆精品久久| 伊人成人网在线看| 国产日韩在线观看视频| 91精品一区国产高清在线gif| 亚洲香蕉视频| 日韩成人午夜精品| 国产一区观看| 国产欧美成人| 久久婷婷丁香| 亚洲一二av| 精品在线91| 欧美一区=区| 成年男女免费视频网站不卡| 福利视频一区| 香蕉国产精品| 日本亚洲三级在线| 美女网站一区| 国产精品一线天粉嫩av| 99久久激情| 日韩黄色在线观看| 久久久人人人| 精品国产不卡| 丝袜国产日韩另类美女| 日韩精品中文字幕第1页| 蜜臀久久久99精品久久久久久| 日韩午夜视频在线| 99热精品在线观看| 日产精品一区二区| 久久国产人妖系列| 国产视频欧美| 日韩视频一区二区三区在线播放免费观看| 精品国产黄a∨片高清在线| 美女视频网站久久| www.com.cn成人| 免费在线观看一区| 日韩精品一二三| 欧美www视频在线观看| 亚州av日韩av| 亚洲成人二区| 欧美日韩一区二区三区四区在线观看 | 精品免费在线| 欧美久久一区二区三区| 黄色亚洲免费| 91免费精品| 国产不卡av一区二区| 天堂va欧美ⅴa亚洲va一国产| 韩日一区二区三区| 黄色精品视频| 日本视频一区二区| 欧美日韩视频免费看| 视频在线在亚洲| 免费视频国产一区| 色综合狠狠操| 国产精品高清一区二区| 热久久国产精品| 91精品久久久久久久久久不卡| 亚洲永久av| 国产aⅴ精品一区二区三区久久| 国产精品jk白丝蜜臀av小说| 日韩高清不卡一区| 黄色免费成人| 午夜久久影院| 久久久久国产精品一区二区| 色婷婷久久久| 人人香蕉久久| 蜜臀久久99精品久久一区二区| 亚洲黄色网址| 久久久国产精品网站| 国产精品久久久久久模特| 亚洲乱亚洲高清| 日本免费一区二区视频| 日韩精品第一| 亚洲性色av| 激情欧美亚洲| 99久久亚洲精品蜜臀| 蜜臀av免费一区二区三区| 91精品一区二区三区综合在线爱| 免费毛片在线不卡| 亚洲免费成人| 国产aⅴ精品一区二区三区久久| 日韩欧美二区| 成人在线网站| 免费在线观看精品| 亚洲一区二区免费看| 亚洲三级精品| 欧美综合精品| 免费亚洲婷婷| 香蕉精品久久| 狠狠操综合网| 日韩精品一页| 91大神在线观看线路一区| 久久三级毛片| 国产成人精品一区二区三区在线| 精品国产中文字幕第一页| 久久精品免费一区二区三区 | 日韩黄色av| 国产欧美日韩在线观看视频 | 国内精品福利| 日本v片在线高清不卡在线观看| 日韩在线成人| 精品欧美日韩精品| 色综合www| 首页国产欧美日韩丝袜| 四虎精品永久免费| 国产精品欧美一区二区三区不卡| 在线看片国产福利你懂的| 亚洲播播91| 午夜国产精品视频免费体验区| 99热精品在线观看| 日韩中文字幕无砖| 亚洲风情在线资源| 亚洲欧美综合| 国产精品三级| 黄色aa久久| 日本一区免费网站| 久久影视三级福利片| 91精品一区二区三区综合| 免费人成精品欧美精品| 欧美自拍一区| 蜜桃成人av| 日韩精品视频在线看| 久久蜜桃精品| 久久亚洲国产精品一区二区| 精品在线网站观看| 亚洲激情国产| 石原莉奈一区二区三区在线观看| 精品中文在线| 午夜日韩福利| 久久精品国产精品亚洲毛片| 亚洲精品.com|