一起草最新网址_日韩一区二区麻豆国产_91视频婷婷_日本一区二区视频在线_日韩激情一区二区三区_国产另类第一区_成人免费在线播放视频_亚洲永久精品ww.7491进入_久久这里有精品视频_久久精品一级片_日韩av在线网页_波多野结衣不卡视频

掌握 Ajax,第 1 部分 Ajax 簡介_AJAX教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:掌握Ajax第2部分使用
  Brett McLaughlin ,作家,編輯,O'Reilly Media Inc.2006 年 2 月 16 日   多數(shù) Web 應用程序都使用請求/響應模型從服務器上獲得完整的 HTML 頁面。常常是點擊一個按鈕,等待服務器

  Brett McLaughlin , 作家,編輯, O'Reilly and Associates

  2006 年 1 月 04 日

  五年前,如果不知道 XML,您就是一只無人重視的丑小鴨。十八個月前,Ruby 成了關(guān)注的中心,不知道 Ruby 的程序員只能坐冷板凳了。今天,如果想跟上最新的技術(shù)時尚,那您的目標就是 Ajax。

  但是,Ajax 不僅僅是一種時尚,它是一種構(gòu)建網(wǎng)站的強大方法,而且不像學習一種全新的語言那樣困難。

  但在詳細探討 Ajax 是什么之前,先讓我們花幾分鐘了解 Ajax 做什么。目前,編寫應用程序時有兩種基本的選擇:

  桌面應用程序,Web 應用程序。兩者是類似的,桌面應用程序通常以 CD 為介質(zhì)(有時候可從網(wǎng)站下載)并完全安裝到您的計算機上。桌面應用程序可能使用互聯(lián)網(wǎng)下載更新,但運行這些應用程序的代碼在桌面計算機上。Web 應用程序運行在某處的 Web 服務器上 —— 毫不奇怪,要通過 Web 瀏覽器訪問這種應用程序。

  不過,比這些應用程序的運行代碼放在何處更重要的是,應用程序如何運轉(zhuǎn)以及如何與其進行交互。桌面應用程序一般很快(就在您的計算機上運行,不用等待互聯(lián)網(wǎng)連接),具有漂亮的用戶界面(通常和操作系統(tǒng)有關(guān))和非凡的動態(tài)性。可以單擊、選擇、輸入、打開菜單和子菜單、到處巡游,基本上不需要等待。

  另一方面,Web 應用程序是最新的潮流,它們提供了在桌面上不能實現(xiàn)的服務(比如 Amazon.com 和 eBay)。但是,伴隨著 Web 的強大而出現(xiàn)的是等待,等待服務器響應,等待屏幕刷新,等待請求返回和生成新的頁面。

  顯然這樣說過于簡略了,但基本的概念就是如此。您可能已經(jīng)猜到,Ajax 嘗試建立桌面應用程序的功能和交互性,與不斷更新的 Web 應用程序之間的橋梁。可以使用像桌面應用程序中常見的動態(tài)用戶界面和漂亮的控件,不過是在 Web 應用程序中。

  還等什么呢?我們來看看 Ajax 如何將笨拙的 Web 界面轉(zhuǎn)化成能迅速響應的 Ajax 應用程序吧。

  老技術(shù),新技巧

  在談到 Ajax 時,實際上涉及到多種技術(shù),要靈活地運用它必須深入了解這些不同的技術(shù)(本系列的頭幾篇文章將分別討論這些技術(shù))。好消息是您可能已經(jīng)非常熟悉其中的大部分技術(shù),更好的是這些技術(shù)都很容易學習,并不像完整的編程語言(如 Java 或 Ruby)那樣困難。

  Ajax 的定義

  順便說一下,Ajax 是 Asynchronous javascript and XML(以及 DHTML 等)的縮寫。這個短語是 Adaptive Path 的 Jesse James Garrett 發(fā)明的,按照 Jesse 的解釋,這不是個首字母縮寫詞。

  下面是 Ajax 應用程序所用到的基本技術(shù):

HTML 用于建立 Web 表單并確定應用程序其他部分使用的字段。
javascript 代碼是運行 Ajax 應用程序的核心代碼,幫助改進與服務器應用程序的通信。
DHTML 或 Dynamic HTML,用于動態(tài)更新表單。我們將使用div、span和其他動態(tài) HTML 元素來標記 HTML。
文檔對象模型 DOM 用于(通過 javascript 代碼)處理 HTML 結(jié)構(gòu)和(某些情況下)服務器返回的 XML。

  我們來進一步分析這些技術(shù)的職責。以后的文章中我將深入討論這些技術(shù),目前只要熟悉這些組件和技術(shù)就可以了。對這些代碼越熟悉,就越容易從對這些技術(shù)的零散了解轉(zhuǎn)變到真正把握這些技術(shù)(同時也真正打開了 Web 應用程序開發(fā)的大門)。

  XMLHttpRequest 對象

  要了解的一個對象可能對您來說也是最陌生的,即XMLHttpRequest。這是一個 javascript 對象,創(chuàng)建該對象很簡單,如清單 1 所示。

  清單 1. 創(chuàng)建新的 XMLHttpRequest 對象

  下一期文章中將進一步討論這個對象,現(xiàn)在要知道這是處理所有服務器通信的對象。繼續(xù)閱讀之前,先停下來想一想:通過XMLHttpRequest對象與服務器進行對話的是 javascript 技術(shù)。這不是一般的應用程序流,這恰恰是 Ajax 的強大功能的來源。

  在一般的 Web 應用程序中,用戶填寫表單字段并單擊 Submit 按鈕。然后整個表單發(fā)送到服務器,服務器將它轉(zhuǎn)發(fā)給處理表單的腳本(通常是 PHP 或 Java,也可能是 CGI 進程或者類似的東西),腳本執(zhí)行完成后再發(fā)送回全新的頁面。該頁面可能是帶有已經(jīng)填充某些數(shù)據(jù)的新表單的 HTML,也可能是確認頁面,或者是具有根據(jù)原來表單中輸入數(shù)據(jù)選擇的某些選項的頁面。當然,在服務器上的腳本或程序處理和返回新表單時用戶必須等待。屏幕變成一片空白,等到服務器返回數(shù)據(jù)后再重新繪制。這就是交互性差的原因,用戶得不到立即反饋,因此感覺不同于桌面應用程序。

  Ajax 基本上就是把 javascript 技術(shù)和XMLHttpRequest對象放在 Web 表單和服務器之間。當用戶填寫表單時,數(shù)據(jù)發(fā)送給一些 javascript 代碼而不是直接發(fā)送給服務器。相反,javascript 代碼捕獲表單數(shù)據(jù)并向服務器發(fā)送請求。同時用戶屏幕上的表單也不會閃爍、消失或延遲。換句話說,javascript 代碼在幕后發(fā)送請求,用戶甚至不知道請求的發(fā)出。更好的是,請求是異步發(fā)送的,就是說 javascript 代碼(和用戶)不用等待服務器的響應。因此用戶可以繼續(xù)輸入數(shù)據(jù)、滾動屏幕和使用應用程序。

  然后,服務器將數(shù)據(jù)返回 javascript 代碼(仍然在 Web 表單中),后者決定如何處理這些數(shù)據(jù)。它可以迅速更新表單數(shù)據(jù),讓人感覺應用程序是立即完成的,表單沒有提交或刷新而用戶得到了新數(shù)據(jù)。javascript 代碼甚至可以對收到的數(shù)據(jù)執(zhí)行某種計算,再發(fā)送另一個請求,完全不需要用戶干預!這就是XMLHttpRequest的強大之處。它可以根據(jù)需要自行與服務器進行交互,用戶甚至可以完全不知道幕后發(fā)生的一切。結(jié)果就是類似于桌面應用程序的動態(tài)、快速響應、高交互性的體驗,但是背后又擁有互聯(lián)網(wǎng)的全部強大力量。

  加入一些 javascript

  得到XMLHttpRequest的句柄后,其他的 javascript 代碼就非常簡單了。事實上,我們將使用 javascript 代碼完成非常基本的任務:

獲取表單數(shù)據(jù):javascript 代碼很容易從 HTML 表單中抽取數(shù)據(jù)并發(fā)送到服務器。
修改表單上的數(shù)據(jù):更新表單也很簡單,從設置字段值到迅速替換圖像。
解析 HTML 和 XML:使用 javascript 代碼操縱 DOM(請參閱 下一節(jié)),處理 HTML 表單服務器返回的 XML 數(shù)據(jù)的結(jié)構(gòu)。

  對于前兩點,需要非常熟悉getElementById()方法,如清單 2 所示。

  清單 2. 用 javascript 代碼捕獲和設置字段值

// Get the value of the "phone" field and stuff it in a variable called phone
var phone = document.getElementById("phone").value;
// Set some values on a form using an array called response
document.getElementById("order").value = response[0];
document.getElementById("address").value = response[1];

  這里沒有特別需要注意的地方,真是好極了!您應該認識到這里并沒有非常復雜的東西。只要掌握了XMLHttpRequest,Ajax 應用程序的其他部分就是如清單 2 所示的簡單 javascript 代碼了,混合有少量的 HTML。同時,還要用一點兒 DOM,我們就來看看吧。

  以 DOM 結(jié)束

  最后還有 DOM,即文檔對象模型。可能對有些讀者來說 DOM 有點兒令人生畏,HTML 設計者很少使用它,即使 javascript 程序員也不大用到它,除非要完成某項高端編程任務。大量使用 DOM 的是復雜的 Java 和 C/C 程序,這可能就是 DOM 被認為難以學習的原因。

  幸運的是,在 javascript 技術(shù)中使用 DOM 很容易,也非常直觀。現(xiàn)在,按照常規(guī)也許應該說明如何使用 DOM,或者至少要給出一些示例代碼,但這樣做也可能誤導您。即使不理會 DOM,仍然能深入地探討 Ajax,這也是我準備采用的方法。以后的文章將再次討論 DOM,現(xiàn)在只要知道可能需要 DOM 就可以了。當需要在 javascript 代碼和服務器之間傳遞 XML 和改變 HTML 表單的時候,我們再深入研究 DOM。沒有它也能做一些有趣的工作,因此現(xiàn)在就把 DOM 放到一邊吧。

  獲取 Request 對象

  有了上面的基礎知識后,我們來看看一些具體的例子。XMLHttpRequest是 Ajax 應用程序的核心,而且對很多讀者來說可能還比較陌生,我們就從這里開始吧。從清單 1 可以看出,創(chuàng)建和使用這個對象非常簡單,不是嗎?等一等。

  還記得幾年前的那些討厭的瀏覽器戰(zhàn)爭嗎?沒有一樣東西在不同的瀏覽器上得到同樣的結(jié)果。不管您是否相信,這些戰(zhàn)爭仍然在繼續(xù),雖然規(guī)模較小。但令人奇怪的是,XMLHttpRequest成了這場戰(zhàn)爭的犧牲品之一。因此獲得XMLHttpRequest對象可能需要采用不同的方法。下面我將詳細地進行解釋。

  使用 Microsoft 瀏覽器

  Microsoft 瀏覽器 Internet Explorer 使用 MSXML 解析器處理 XML(可以通過參考資料進一步了解 MSXML)。因此如果編寫的 Ajax 應用程序要和 Internet Explorer 打交道,那么必須用一種特殊的方式創(chuàng)建對象。

  但并不是這么簡單。根據(jù) Internet Explorer 中安裝的 javascript 技術(shù)版本不同,MSXML 實際上有兩種不同的版本,因此必須對這兩種情況分別編寫代碼。請參閱清單 3,其中的代碼在 Microsoft 瀏覽器上創(chuàng)建了一個XMLHttpRequest。

  清單 3. 在 Microsoft 瀏覽器上創(chuàng)建 XMLHttpRequest 對象

var xmlHttp = false;
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}

  您對這些代碼可能還不完全理解,但沒有關(guān)系。當本系列文章結(jié)束的時候,您將對 javascript 編程、錯誤處理、條件編譯等有更深的了解。現(xiàn)在只要牢牢記住其中的兩行代碼:

xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

 和

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");。

  這兩行代碼基本上就是嘗試使用一個版本的 MSXML 創(chuàng)建對象,如果失敗則使用另一個版本創(chuàng)建該對象。不錯吧?如果都不成功,則將xmlHttp變量設為 false,告訴您的代碼出現(xiàn)了問題。如果出現(xiàn)這種情況,可能是因為安裝了非 Microsoft 瀏覽器,需要使用不同的代碼。

  處理 Mozilla 和非 Microsoft 瀏覽器

  如果選擇的瀏覽器不是 Internet Explorer,或者為非 Microsoft 瀏覽器編寫代碼,就需要使用不同的代碼。事實上就是清單 1 所示的一行簡單代碼:

var xmlHttp = new XMLHttpRequest object;。

  這行簡單得多的代碼在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 瀏覽器中,創(chuàng)建了XMLHttpRequest對象。

  結(jié)合起來

  關(guān)鍵是要支持所有瀏覽器。誰愿意編寫一個只能用于 Internet Explorer 或者非 Microsoft 瀏覽器的應用程序呢?或者更糟,要編寫一個應用程序兩次?當然不!因此代碼要同時支持 Internet Explorer 和非 Microsoft 瀏覽器。清單 4 顯示了這樣的代碼。

  清單 4. 以支持多種瀏覽器的方式創(chuàng)建 XMLHttpRequest 對象

/* Create a new XMLHttpRequest object to talk to the Web server */
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlHttp = false;
}
}
@end @*/

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}

  現(xiàn)在先不管那些注釋掉的奇怪符號,如@cc_on,這是特殊的 javascript 編譯器命令,將在下一期針對XMLHttpRequest的文章中詳細討論。這段代碼的核心分為三步:

  1. 建立一個變量xmlHttp來引用即將創(chuàng)建的XMLHttpRequest對象。
  2. 嘗試在 Microsoft 瀏覽器中創(chuàng)建該對象:
  o 嘗試使用Msxml2.XMLHTTP對象創(chuàng)建它。
  o 如果失敗,再嘗試Microsoft.XMLHTTP對象。
  3. 如果仍然沒有建立xmlHttp,則以非 Microsoft 的方式創(chuàng)建該對象。

  最后,xmlHttp應該引用一個有效的XMLHttpRequest對象,無論運行什么樣的瀏覽器。

  關(guān)于安全性的一點說明

  安全性如何呢?現(xiàn)在瀏覽器允許用戶提高他們的安全等級,關(guān)閉 javascript 技術(shù),禁用瀏覽器中的任何選項。在這種情況下,代碼無論如何都不會工作。此時必須適當?shù)靥幚韱栴},這需要單獨的一篇文章來討論,要放到以后了(這個系列夠長了吧?不用擔心,讀完之前也許您就掌握了)。現(xiàn)在要編寫一段健壯但不夠完美的代碼,對于掌握 Ajax 來說就很好了。以后我們還將討論更多的細節(jié)。

  Ajax 世界中的請求/響應

  現(xiàn)在我們介紹了 Ajax,對XMLHttpRequest對象以及如何創(chuàng)建它也有了基本的了解。如果閱讀得很仔細,您可能已經(jīng)知道與服務器上的 Web 應用程序打交道的是 javascript 技術(shù),而不是直接提交給那個應用程序的 HTML 表單。

  還缺少什么呢?到底如何使用XMLHttpRequest。因為這段代碼非常重要,您編寫的每個 Ajax 應用程序都要以某種形式使用它,先看看 Ajax 的基本請求/響應模型是什么樣吧。

  發(fā)出請求

  您已經(jīng)有了一個嶄新的XMLHttpRequest對象,現(xiàn)在讓它干點活兒吧。首先需要一個 Web 頁面能夠調(diào)用的 javascript 方法(比如當用戶輸入文本或者從菜單中選擇一項時)。接下來就是在所有 Ajax 應用程序中基本都雷同的流程:

1. 從 Web 表單中獲取需要的數(shù)據(jù)。
2. 建立要連接的 URL。
3. 打開到服務器的連接。
4. 設置服務器在完成后要運行的函數(shù)。
5. 發(fā)送請求。

  清單 5 中的示例 Ajax 方法就是按照這個順序組織的:

  清單 5. 發(fā)出 Ajax 請求

function callServer() {
// Get the city and state from the web form
var city = document.getElementById("city").value;
var state = document.getElementById("state").value;
// Only go on if there are values for both fields
if ((city == null) || (city == "")) return;
if ((state == null) || (state == "")) return;

// Build the URL to connect to
var url = "/scripts/getZipCode.php?city=" escape(city) "&state=" escape(state);

// Open a connection to the server
xmlHttp.open("GET", url, true);

// Setup a function for the server to run when it's done
xmlHttp.onreadystatechange = updatePage;

// Send the request
xmlHttp.send(null);
}

  其中大部分代碼意義都很明確。開始的代碼使用基本 javascript 代碼獲取幾個表單字段的值。然后設置一個 PHP 腳本作為鏈接的目標。要注意腳本 URL 的指定方式,city 和 state(來自表單)使用簡單的 GET 參數(shù)附加在 URL 之后。

  然后打開一個連接,這是您第一次看到使用XMLHttpRequest。其中指定了連接方法(GET)和要連接的 URL。最后一個參數(shù)如果設為true,那么將請求一個異步連接(這就是 Ajax 的由來)。如果使用false,那么代碼發(fā)出請求后將等待服務器返回的響應。如果設為true,當服務器在后臺處理請求的時候用戶仍然可以使用表單(甚至調(diào)用其他 javascript 方法)。

  xmlHttp(要記住,這是XMLHttpRequest對象實例)的onreadystatechange屬性可以告訴服務器在運行完成后(可能要用五分鐘或者五個小時)做什么。因為代碼沒有等待服務器,必須讓服務器知道怎么做以便您能作出響應。在這個示例中,如果服務器處理完了請求,一個特殊的名為updatePage()的方法將被觸發(fā)。

  最后,使用值null調(diào)用send()。因為已經(jīng)在請求 URL 中添加了要發(fā)送給服務器的數(shù)據(jù)(city 和 state),所以請求中不需要發(fā)送任何數(shù)據(jù)。這樣就發(fā)出了請求,服務器按照您的要求工作。

  如果沒有發(fā)現(xiàn)任何新鮮的東西,您應該體會到這是多么簡單明了!除了牢牢記住 Ajax 的異步特性外,這些內(nèi)容都相當簡單。應該感激 Ajax 使您能夠?qū)P木帉懫恋膽贸绦蚝徒缑妫挥脫膹碗s的 HTTP 請求/響應代碼。

  清單 5 中的代碼說明了 Ajax 的易用性。數(shù)據(jù)是簡單的文本,可以作為請求 URL 的一部分。用 GET 而不是更復雜的 POST 發(fā)送請求。沒有 XML 和要添加的內(nèi)容頭部,請求體中沒有要發(fā)送的數(shù)據(jù);換句話說,這就是 Ajax 的烏托邦。

  不用擔心,隨著本系列文章的展開,事情會變得越來越復雜。您將看到如何發(fā)送 POST 請求、如何設置請求頭部和內(nèi)容類型、如何在消息中編碼 XML、如何增加請求的安全性,可以做的工作還有很多!暫時先不用管那些難點,掌握好基本的東西就行了,很快我們就會建立一整套的 Ajax 工具庫。

  處理響應

  現(xiàn)在要面對服務器的響應了。現(xiàn)在只要知道兩點:

  什么也不要做,直到xmlHttp.readyState屬性的值等于 4。 服務器將把響應填充到xmlHttp.responseText屬性中。

  其中的第一點,即就緒狀態(tài),將在下一篇文章中詳細討論,您將進一步了解 HTTP 請求的階段,可能比您設想的還多。現(xiàn)在只要檢查一個特定的值(4)就可以了(下一期文章中還有更多的值要介紹)。第二點,使用xmlHttp.responseText屬性獲得服務器的響應,這很簡單。清單 6 中的示例方法可供服務器根據(jù)清單 5 中發(fā)送的數(shù)據(jù)調(diào)用。

  清單 6. 處理服務器響應

function updatePage() {
if (xmlHttp.readyState == 4) {
var response = xmlHttp.responseText;
document.getElementById("zipCode").value = response;
}
}

  這些代碼同樣既不難也不復雜。它等待服務器調(diào)用,如果是就緒狀態(tài),則使用服務器返回的值(這里是用戶輸入的城市和州的 ZIP 編碼)設置另一個表單字段的值。于是包含 ZIP 編碼的zipCode字段突然出現(xiàn)了,而用戶沒有按任何按鈕!這就是前面所說的桌面應用程序的感覺。快速響應、動態(tài)感受等等,這些都只因為有了小小的一段 Ajax 代碼。

  細心的讀者可能注意到zipCode是一個普通的文本字段。一旦服務器返回 ZIP 編碼,updatePage()方法就用城市/州的 ZIP 編碼設置那個字段的值,用戶就可以改寫該值。這樣做有兩個原因:保持例子簡單,說明有時候可能希望用戶能夠修改服務器返回的數(shù)據(jù)。要記住這兩點,它們對于好的用戶界面設計來說很重要。

  連接 Web 表單

  還有什么呢?實際上沒有多少了。一個 javascript 方法捕捉用戶輸入表單的信息并將其發(fā)送到服務器,另一個 javascript 方法監(jiān)聽和處理響應,并在響應返回時設置字段的值。所有這些實際上都依賴于調(diào)用第一個 javascript 方法,它啟動了整個過程。最明顯的辦法是在 HTML 表單中增加一個按鈕,但這是 2001 年的辦法,您不這樣認為嗎?還是像清單 7 這樣利用 javascript 技術(shù)吧。

  清單 7. 啟動一個 Ajax 過程


City: onChange="callServer();" />


State: onChange="callServer();" />


Zip Code:


  如果感覺這像是一段相當普通的代碼,那就對了,正是如此!當用戶在 city 或 state 字段中輸入新的值時,callServer()方法就被觸發(fā),于是 Ajax 開始運行了。有點兒明白怎么回事了吧?好,就是如此!

分享:AJAX實例入門
  一、開門見山   這些時間,瞎子也看得見,AJAX正大踏步的朝我們走來。不管我們是擁護也好,反對也罷,還是視而不見,AJAX像一陣潮流,席轉(zhuǎn)了我們所有的人。   關(guān)于AJAX的定義也

來源:模板無憂//所屬分類:AJAX教程/更新時間:2008-08-22
相關(guān)AJAX教程
91丨九色丨尤物| 国产无遮挡免费视频| 艳母动漫在线免费观看| 99国产高清| 中文字幕欧美视频在线| 色又黄又爽网站www久久| 欧美极品aⅴ影院| 亚洲a视频在线观看| 日本免费精品视频| xxx在线播放| a级在线观看视频| 国产v亚洲v天堂无码久久久| 少妇久久久久久被弄到高潮| 91免费高清视频| 亚洲自拍欧美色图| 999在线免费观看视频| 成人综合网网址| 国产精品看片资源| 欧美一级淫片播放口| 91a在线视频| 国产精品美女999| 亚洲va男人天堂| 国产二区一区| 日本一区二区三区免费观看| 欧美日韩国产不卡在线看| 日韩精品一区二区三区丰满| 日韩资源av在线| 国产av第一区| 国产精品一区二区羞羞答答| 无套内谢丰满少妇中文字幕| 偷偷色噜狠狠狠狠的777米奇| 久久久久麻豆v国产精华液好用吗| 2021国产视频| 亚洲成人国产精品| 欧美xxxx18性欧美| 国产精品久久9| 国产精品免费在线| 午夜精品一区二区在线观看 | 97成人在线观看| 亚洲免费视频网| 精品一区二区在线观看| 久久久亚洲高清| 色香色香欲天天天影视综合网| 亚洲大胆人体在线| 欧美福利视频在线观看| 国产98在线|日韩| 日韩精品欧美专区| 国产在线不卡av| 中文字幕欧美色图| 日本成人在线一区| av电影在线观看完整版一区二区| 亚洲品质自拍视频| 欧美性生交大片免网| 日韩风俗一区 二区| 国产成+人+综合+亚洲欧洲 | 欧美日韩精品区| 国产91对白在线观看九色| 日韩欧美中文在线| 日韩日本欧美亚洲| 一区二区久久久久久| 最近2019中文字幕在线高清| 国产精品免费一区豆花| 亚洲精品自在在线观看| 精品少妇一区二区三区密爱| 香蕉久久国产av一区二区| 久久亚洲精品小早川怜子| 欧美tickling挠脚心丨vk| 日韩在线欧美在线| 国产真实老熟女无套内射| 精品99在线观看| 成人午夜激情视频| 精品粉嫩超白一线天av| 日本一区二区三区四区视频| 欧美精品卡一卡二| 日本妇女毛茸茸| 西西人体44www大胆无码| 91久久精品一区二区三区| 欧美精品一区三区| 麻豆一区二区三区视频| 精品国产亚洲av麻豆| 亚洲香肠在线观看| 久久精品国产一区二区电影| 国产精品自拍合集| 日本少妇裸体做爰| 久久久99久久精品欧美| 中文字幕欧美日韩在线| 亚洲国产欧洲综合997久久 | 亚州国产精品视频| 亚洲国产日韩综合久久精品| 色黄久久久久久| 青青在线免费观看视频| 国产乱叫456在线| 色综合天天综合网国产成人综合天| 91系列在线观看| 欧美手机在线观看| 亚洲色图一区二区| 国产欧美一区二区三区不卡高清| 欧日韩不卡视频| 国产精品天干天干在线综合| 伊人精品在线观看| 欧美激情亚洲天堂| 亚洲特级黄色片| 亚洲精品一区在线观看| 黄色片一级视频| 青草热久免费精品视频| 中文字幕avav| 性欧美丰满熟妇xxxx性仙踪林| 91视频精品在这里| 欧美激情久久久久| 亚洲曰本av电影| 日本福利片在线观看| 色婷婷av一区二区| 97中文字幕在线| 久久精品国产第一区二区三区| 久色乳综合思思在线视频| 免费三级在线观看| 国产白嫩美女无套久久| 91色综合久久久久婷婷| 91po在线观看91精品国产性色| 26uuu国产| 亚洲欧美日韩中文字幕一区二区三区| 91欧美激情另类亚洲| 中国美女黄色一级片| 色综合久久88色综合天天免费| 在线观看污视频| 精品欧美一区二区久久久伦| 国产大学生av| 亚洲激情六月丁香| 国产一区免费视频| 青草视频在线观看免费| 亚洲欧洲一区二区三区久久| 亚洲观看黄色网| 色狠狠av一区二区三区| 免费不卡av在线| 久久综合久久综合久久综合| 日韩免费视频在线观看| 97人妻精品一区二区三区视频 | 国产精品高精视频免费| 一本到在线视频| 91精品国产91久久久久久不卡| 一级黄色大片视频| 久久久久久久久久久免费精品| 日韩成年人视频| 国产丝袜视频一区| 九九在线观看视频| 日韩视频亚洲视频| 中文字幕在线2018| 国产精品va在线| 老妇喷水一区二区三区| 999视频在线观看| 国产成人免费av在线| 色视频一区二区三区| 久久久精品一品道一区| 成年人看的毛片| 国产欧美一区二区精品久导航 | 成人精品高清在线| 一道本视频在线观看| 日韩av一区二区在线| 久久久久久久久网站| 亚洲欧美日本在线观看| www.av蜜桃| 亚洲午夜久久久久久久| 天天综合网在线观看| 男女激情无遮挡| 亚洲精品ady| 老司机久久99久久精品播放免费| 9191国产视频| 欧美性生活一区| 国产精品21p| 夜夜爽99久久国产综合精品女不卡| 一本久久a久久精品亚洲| 日产欧产va高清| 麻豆传媒一区二区| 日韩一区二区三区av| 人妻夜夜爽天天爽| 国产资源中文字幕| 日韩av免费在线观看| 亚洲午夜精品在线| 久久99久久久久久久久久久| 91久久精品一区二区二区| 国产激情在线看| 亚洲国产日韩a在线播放性色| 在线免费黄色小视频| 色偷偷av亚洲男人的天堂| 日韩成人免费电影| 牛夜精品久久久久久久| 久久精品91久久香蕉加勒比| 狂野欧美性猛交xxxx巴西| 九一国产精品视频| xxxx欧美18另类的高清| 香蕉国产在线视频| 不卡的在线视频| 性欧美在线看片a免费观看| 美女高潮久久久| 中文字幕第三区| 国产精品久久久久久久久久ktv | 91九色蝌蚪91por成人| 国产亚洲二区| 日韩一级高清毛片| 水野朝阳av一区二区三区| 91传媒理伦片在线观看| 成人精品aaaa网站| 色综合欧美在线| 国产情侣在线播放| 原创真实夫妻啪啪av| 亚洲自拍小视频| 精品久久久久久无| 99精品欧美一区二区三区综合在线| 午夜爽爽爽男女免费观看| 亚洲欧美精品suv| 亚洲精品你懂的| 香蕉久久国产av一区二区| 美女脱光内衣内裤| 亚洲综合激情五月| 中文字幕一区二区三区电影| 亚洲国产综合91精品麻豆| 成人免费毛片视频| 性生交大片免费看l| 亚洲免费视频一区| 97精品伊人久久久大香线蕉| 欧美日韩午夜影院| 91啪九色porn原创视频在线观看| 久久精品视频2| 国产小视频自拍| 91九色在线观看视频| 超碰97人人在线| 久色乳综合思思在线视频| 午夜日韩在线电影| 99久久精品免费看| 无码人妻av免费一区二区三区| 性活交片大全免费看| 亚洲美女自拍偷拍| 国产免费一区二区三区| 欧美综合在线第二页| 国产视频丨精品|在线观看| 香蕉久久一区二区不卡无毒影院 | 激情综合色丁香一区二区| 欧美特黄aaaaaa| 免费看日本黄色片| 最新日本中文字幕| 超碰在线97免费| 国产91亚洲精品一区二区三区| 91av在线视频观看| 久久中文字幕一区| 精品日韩在线一区| 色婷婷亚洲婷婷| 樱桃国产成人精品视频| 久久综合久久综合亚洲| 蜜桃av一区二区| 亚洲 精品 综合 精品 自拍| 国产日韩欧美一区二区东京热| 国产情侣自拍av| 国产乡下妇女做爰毛片| 日日碰狠狠添天天爽| 天天天干夜夜夜操| 天天干天天综合| 2025韩国理伦片在线观看| 一本久道久久综合| 97在线免费视频观看| 91精品国产毛片武则天| 五月天色婷婷综合| 成年人深夜视频| av黄色在线网站| 激情黄色小视频| 少妇极品熟妇人妻无码| 人妻丰满熟妇aⅴ无码| www.自拍偷拍| 国产第一页浮力| 亚洲一区欧美在线| 一区二区三区在线免费观看视频| 中文字幕av影视| 91亚洲国产成人久久精品麻豆| 国产又粗又长又大视频| 日本精品一二区| 成人午夜精品在线| 亚洲色欲色欲www在线观看| 亚洲国产毛片aaaaa无费看 | 精品国产九九九| 男女男精品网站| 成人av免费在线观看| 国产精品大尺度| www.热久久| 成人免费毛片a| 亚洲五码中文字幕| 欧美xxxxx牲另类人与| 欧美成人手机在线| 99在线国产| 久久久久久久久影视| 久久久久亚洲av无码专区首jn| 无码国产69精品久久久久网站| 91制片厂在线| 丰满人妻妇伦又伦精品国产| 94色蜜桃网一区二区三区| 国产精品无遮挡| 欧美一级欧美三级在线观看| 欧美情侣性视频| 亚洲aⅴ日韩av电影在线观看| 欧美xxxx吸乳| 精品人妻一区二区三区蜜桃视频| 91久久国语露脸精品国产高跟| 成人ar影院免费观看视频| 欧美午夜电影网| 日韩美女视频免费看| 91社在线播放| 在线 丝袜 欧美 日韩 制服| 在线亚洲欧美日韩| 2023国产精品自拍| 亚洲黄色av网站| 国产伦精品一区二区三毛| wwwxxxx在线观看| 国产农村妇女毛片精品| 国产精品系列在线| 中文字幕欧美专区| 精品人伦一区二区三区| 三级黄色片网站| 精品一区二区在线播放| 3d动漫精品啪啪一区二区竹菊| 国产97人人超碰caoprom| 日本一区二区在线视频观看| 中文字幕永久免费| 日日夜夜精品免费视频| 欧美午夜精品电影| 国产精品成人观看视频免费| 日韩在线免费观看av| 粉嫩久久99精品久久久久久夜| 日韩电影在线观看中文字幕| 欧美一级日韩不卡播放免费| 久久99精品国产99久久| 九九热久久免费视频| 国产91丝袜在线18| 日韩中文在线中文网三级| 国产精品久久国产| 精品不卡一区二区| 国产亚洲成年网址在线观看| 国模私拍视频一区| 中文字幕乱妇无码av在线| av天堂一区二区三区| 欧美一区二区三区不卡| 91精品国产一区二区三区动漫| 成人区人妻精品一区二| 天堂精品中文字幕在线| 亚洲欧美激情精品一区二区| 中文字幕一区二区三区最新 | 国产一区二区久久精品| 欧美伦理视频在线观看| 国产精品一级视频| 欧美日韩一本到| 天天想你在线观看完整版电影免费| 欧美人与禽zozzo禽性配| 欧美性猛交xxxx富婆弯腰| 色综合电影网| 欧日韩在线视频| 久久视频免费观看| 日本人69视频| 粉嫩av一区二区三区| 国产精品一区二区三区免费视频| 2025韩国理伦片在线观看| 久久蜜桃一区二区| 国产精品久久久久久久久婷婷| 天天干天天操天天爱| 日韩一级大片在线| 4388成人网| 中文字幕在线观看视频网站| 欧美一区二区日韩| 日韩在线不卡一区| 亚洲男同1069视频| 国产一区不卡在线观看| 免费观看国产精品| 国产一区二区三区网站| 国产又大又粗又爽的毛片| 综合久久久久久久| r级无码视频在线观看| 国产丝袜在线精品| 国产伦精品一区二区三区视频黑人| 国产欧美一级片| 日韩在线视频网站| 美女福利视频在线观看| 欧美影院精品一区| 国产色视频在线播放| 五月天欧美精品| 老头吃奶性行交视频| 久久久精品日韩欧美| 日本一道在线观看| 久久久www成人免费毛片麻豆| 女人一区二区三区| av中文字幕在线不卡| 丰满人妻一区二区三区53号| 99精品欧美一区二区三区综合在线| 国产精品普通话| 日韩不卡一区二区三区| 成人自拍偷拍| www.日韩在线| 黄色一级视频播放| 国产日韩av一区| 日韩在线一区视频| 日韩欧美国产一区二区在线播放| 国产又粗又猛又爽又黄的视频四季 | 国产精品v欧美精品v日韩| 成人动漫视频在线| 日本精品www| 日韩视频一区二区| 久久久久亚洲av成人无码电影| 色噜噜亚洲精品中文字幕| 亚洲精品男人的天堂| 欧美最猛性xxxxx亚洲精品| 国产呦萝稀缺另类资源| 男人天堂av片| 欧美精品在线一区二区| 国产精品黄色网| 久草一区二区|