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

首頁 > 編程 > JavaScript > 正文

基于$.ajax()方法從服務器獲取json數據的幾種方式總結

2019-11-19 14:26:43
字體:
來源:轉載
供稿:網友

一.什么是json

json是一種取代xml的數據結構,和xml相比,它更小巧但描述能力卻很強,網絡傳輸數據使用流量更少,速度更快。

json就是一串字符串,使用下面的符號標注。

{鍵值對} : json對象

[{},{},{}] :json數組

"" :雙引號內是屬性或值

: :冒號前為鍵,后為值(這個值可以是基本數據類型的值,也可以是數組或對象),所以 {"age": 18} 可以理解為是一個包含age為18的json對象,而[{"age": 18},{"age": 20}]就表示包含兩個對象的json數組。也可以使用{"age":[18,20]}來簡化上面的json數組,這是一個擁有一個age數組的對象。

二.$.ajax()方法中dataType屬性的取值

$.ajax()方法中dataType屬性要求為String類型的參數,預期服務器返回的數據類型。如果不指定,JQuery將自動根據http包mime信息返回responseXML或responseText【在第三部分解釋】,并作為回調函數參數傳遞??捎玫念愋腿缦拢?/p>

xml:返回XML文檔,可用JQuery處理。

html:返回純文本HTML信息;包含的script標簽會在插入DOM時執行。

script:返回純文本JavaScript代碼。不會自動緩存結果。除非設置了cache參數。注意在遠程請求時(不在同一個域下),所有post請求都將轉為get請求。

json:返回JSON數據。

jsonp:JSONP格式。使用SONP形式調用函數時,例如myurl?callback=?,JQuery將自動替換后一個“?”為正確的函數名,以執行回調函數。

三.Mime數據類型及response的setContentType()方法

什么是MIME類型?在把輸出結果傳送到瀏覽器上的時候,瀏覽器必須啟動適當的應用程序來處理這個輸出文檔。這可以通過多種類型MIME(多功能網際郵件擴充協議)來完成。在HTTP中,MIME類型被定義在Content-Type header中。

例 如,架設你要傳送一個Microsoft Excel文件到客戶端。那么這時的MIME類型就是“application/vnd.ms-excel”。在大多數實際情況中,這個文件然后將傳送給 Execl來處理(假設我們設定Execl為處理特殊MIME類型的應用程序)。在Java中,設定MIME類型的方法是通過Response對象的ContentType屬性。比如常用:response.setContentType("text/html;charset=UTF-8")進行設置。

最早的HTTP協議中,并沒有附加的數據類型信息,所有傳送的數據都被客戶程序解釋為超文本標記語言HTML 文檔,而為了支持多媒體數據類型,HTTP協議中就使用了附加在文檔之前的MIME數據類型信息來標識數據類型。

每個MIME類型由兩部分組成,前面是數據的大類別,例如文本text、圖象image等,后面定義具體的種類。

常見的MIME類型:

超文本標記語言文本 .html,.html text/html

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

GIF圖形 .gif image/gif

JPEG圖形 .ipeg,.jpg image/jpeg

au聲音文件 .au audio/basic

MIDI音樂文件 mid,.midi audio/midi,audio/x-midi

RealAudio音樂文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar

客戶程序從服務器上接收數據的時候,它只是從服務器接受數據流,并不了解文檔的名字,因此服務器必須使用附加信息來告訴客戶程序數據的MIME類型。

服務器在發送真正的數據之前,就要先發送標志數據的MIME類型的信息,這個信息使用Content-type關鍵字進行定義,例如對于HTML文檔,服務器將首先發送以下兩行MIME標識信息,這個標識并不是真正的數據文件的一部分。

Content-type: text/html

注意,第二行為一個空行,這是必須的,使用這個空行的目的是將MIME信息與真正的數據內容分隔開。

如前面所說,在Java中,設定MIME類型的方法是通過Response對象的ContentType屬性,設置的方法是使用response.setContentType(MIME)語句,response.setContentType(MIME)的作用是使客戶端瀏覽器,區分不同種類的數據,并根據不同的MIME調用瀏覽器內不同的程序嵌入模塊來處理相應的數據。

Tomcat的安裝目錄/conf/web.xml中就定義了大量MIME類型 ,可以參考。比如可以設置:

response.setContentType("text/html; charset=utf-8"); html

response.setContentType("text/plain; charset=utf-8"); 文本

application/json json數據

這個方法設置發送到客戶端的響應的內容類型,此時響應還沒有提交。給出的內容類型可以包括字符編碼說明,例如:text/html;charset=UTF-8。如果該方法在getWriter()方法被調用之前調用,那么響應的字符編碼將僅從給出的內容類型中設置。該方法如果在getWriter()方法被調用之后或者在被提交之后調用,將不會設置響應的字符編碼,在使用http協議的情況中,該方法設置 Content-type實體報頭。

四.使用$.ajax()方法獲取json數據的三種方式

dataType參數的配置決定了jquery如何幫助我們自動解析服務器返回的數據,有幾種方式可以獲取后臺返回的json字符串并解析為json對象,下面是Java為例解釋,下面三中方式的結果都是圖一所示,項目運行在內網,無法截圖,只能拍照,見諒。

1、$.ajax()參數中不設置dataType,后臺response也不設置返回類型,則默認會以普通文本處理【response.setContentType("text/html;charset=utf-8");也是作為文本處理】,js中需要手動使用eval()或$.parseJSON()等方法將返回的字符串轉換為json對象使用。

//Java代碼:后臺獲取單個數控定位器的歷史表格的數據	public void getHistorySingleData() throws IOException{		HttpServletRequest request = ServletActionContext.getRequest();		HttpServletResponse response = ServletActionContext.getResponse();		response.setHeader("Content-type", "text/html;charset=UTF-8");		response.setContentType("text/html;charset=utf-8");		String deviceName = request.getParameter("deviceName");		String startDate= request.getParameter("startDate");		String endDate = request.getParameter("endDate");		SingleHistoryData[] singleHistoryData = chartService.getHistorySingleData(deviceName,startDate, endDate);		System.out.println(singleHistoryData.length);		System.out.println(JSONArray.fromObject(singleHistoryData).toString());//打?。篬{"time":"2016-11-11 10:00:00","state":"運行","ball":"鎖緊",....},{"time":"2016-11-11 10:00:05","state":"運行","ball":"鎖緊",....},{},{}....]查到幾條singleHistoryData對象就打印幾個對象的信息{"time":"2016-11-11 10:00:05","state":"運行","ball":"鎖緊",....}		response.getWriter().print(JSONArray.fromObject(singleHistoryData).toString());	}
	/*js代碼:選擇查詢某一時間段的數據,點擊查詢之后進行顯示*/ $("#search").click(function () { 	var data1 = []; 	var n; 	var deviceName=$("body").attr("id");   var startDate = $("#startDate").val();  var endDate = $("#endDate").val();  $.ajax({   url:"/avvii/chart/getHistorySingleData",   type:"post",   data:{    "deviceName":deviceName,    "startDate": startDate,    "endDate": endDate   },   success: function (data) {  	 alert(data);//---->彈出[{"time":"2016-11-11 10:00:00","state":"運行","ball":"鎖緊",....},{"time":"2016-11-11 10:00:05","state":"運行","ball":"鎖緊",....},{},{}....],后臺傳過來幾條singleHistoryData對象就打印幾個對象的信息{"time":"2016-11-11 10:00:05","state":"運行","ball":"鎖緊",....} 		 alert(Object.prototype.toString.call(data)); //--->彈出[object String],說明獲取的是String類型的數據  	 var JsonObjs = eval("(" + data + ")");  //或者:var JsonObjs = $.parseJSON(data); 		 alert(JsonObjs);//alert(JsonObjs);---->彈出[object Object],[object Object],[object Object][object Object],[object Object],[object Object]……后臺傳過來幾條singleHistoryData對象就打印幾個[object Object]    n=JsonObjs.length;    if(n==0){   	 alert("您選擇的時間段無數據,請重新查詢");    } 		 for(var i = 0; i < JsonObjs.length; i++){	      		  	  var name = JsonObjs[i]['time'];//針對每一條數據:JsonObjs[i],或者:JsonObjs[i].time		 	  var state = JsonObjs[i]['state'];		 	  var ball = JsonObjs[i]['ball'];		 	  var xd = JsonObjs[i]['xd'];		 	  var yd = JsonObjs[i]['yd'];		 	  var zd = JsonObjs[i]['zd'];		 	  var xf = JsonObjs[i]['xf'];		 	  var yf = JsonObjs[i]['yf'];		 	  var zf = JsonObjs[i]['zf'];      data1[i] = {name:name,state:state,ball:ball,xd:xd,yd:yd,zd:zd,xf:xf,yf:yf,zf:zf};//個數與下面表頭對應起來就可以了,至于叫什么名字并不影響控件的使用    } 		 if(JsonObjs.length != 10){ 			 for(var j=0;j<(10-((JsonObjs.length)%10));j++){    //補全最后一頁的空白行,使表格的長度保持不變 				 data1[j+JsonObjs.length] = {name:" ",state:"",ball:"",xd:"",yd:"",zd:"",xf:"",yf:"",zf:""};  			 } 		 }    var userOptions = {      "id":"kingTable",        				//必須 表格id      "head":["時間","運行狀態","球頭狀態","X向位置/mm","Y向位置/mm","Z向位置/mm","X向承載力/Kg","Y向承載力/Kg","Z向承載力/Kg"], //必須 thead表頭      "body":data1,         				//必須 tbody 后臺返回的數據展示      "foot":true,         					// true/false 是否顯示tfoot --- 默認false      "displayNum": 10,        					//必須 默認 10 每頁顯示行數      "groupDataNum":6,        					//可選 默認 10 組數      sort:false,         					// 點擊表頭是否排序 true/false --- 默認false      search:false,         					// 默認為false 沒有搜索      lang:{       gopageButtonSearchText:"搜索"      }    }    var cs = new KingTable(null,userOptions);   }  });  });

2、$.ajax()參數中設置dataType="json",則jquery會自動將返回的字符串轉化為json對象。后臺可以設置為:【推薦】response.setContentType("text/html;charset=utf-8");或者response.setContentType("application/json;charset=utf-8");

	//Java代碼:后臺獲取單個數控定位器的歷史表格的數據	public void getHistorySingleData() throws IOException{		HttpServletRequest request = ServletActionContext.getRequest();		HttpServletResponse response = ServletActionContext.getResponse();		response.setHeader("Content-type", "text/html;charset=UTF-8");		response.setContentType("text/html;charset=utf-8");		String deviceName = request.getParameter("deviceName");		String startDate= request.getParameter("startDate");		String endDate = request.getParameter("endDate");		SingleHistoryData[] singleHistoryData = chartService.getHistorySingleData(deviceName,startDate, endDate);		System.out.println(singleHistoryData.length);		System.out.println(JSONArray.fromObject(singleHistoryData).toString());//打?。篬{"time":"2016-11-11 10:00:00","state":"運行","ball":"鎖緊",....},{"time":"2016-11-11 10:00:05","state":"運行","ball":"鎖緊",....},{},{}....]查到幾條singleHistoryData對象就打印幾個對象的信息{"time":"2016-11-11 10:00:05","state":"運行","ball":"鎖緊",....}		response.getWriter().print(JSONArray.fromObject(singleHistoryData).toString());	}
/*js代碼:頁面首次加載時,顯示規定時間段的數據*/ 	var data1 = [];	var deviceName=$("body").attr("id");  var startDate = $("#startDate").val("2000-01-01 00:00:00"); var endDate = $("#endDate").val("2018-01-01 00:00:00"); $.ajax({  url:"/avvii/chart/getHistorySingleData",  type:"post",  data:{   "deviceName":deviceName,   "startDate": "2000-01-01 00:00:00",   "endDate": "2018-01-01 00:00:00"  },  dataType:"json",  success: function (data) { 	 alert(data);//---->彈出[object Object],[object Object],[object Object][object Object],[object Object],[object Object]……后臺傳過來幾條singleHistoryData對象就打印幾個json對象:[object Object]   for(var i = 0; i < data.length; i++){	      	  	  var name = data[i]['time'];	 	  var state = data[i]['state'];	 	  var ball = data[i]['ball'];	 	  var xd = data[i]['xd'];	 	  var yd = data[i]['yd'];	 	  var zd = data[i]['zd'];	 	  var xf = data[i]['xf'];	 	  var yf = data[i]['yf'];	 	  var zf = data[i]['zf'];     data1[i] = {name:name,state:state,ball:ball,xd:xd,yd:yd,zd:zd,xf:xf,yf:yf,zf:zf};   }		 if(data.length != 10){			 for(var j=0;j<(10-((data.length)%10));j++){    //補全最后一頁的空白行,使表格的長度保持不變				 data1[j+data.length] = {name:" ",state:"",ball:"",xd:"",yd:"",zd:"",xf:"",yf:"",zf:""}; 			 }		 }   var userOptions = {     "id":"kingTable",        				//必須 表格id     "head":["時間","運行狀態","球頭狀態","X向位置/mm","Y向位置/mm","Z向位置/mm","X向承載力/Kg","Y向承載力/Kg","Z向承載力/Kg"], //必須 thead表頭     "body":data1,         				//必須 tbody 后臺返回的數據展示     "foot":true,         					// true/false 是否顯示tfoot --- 默認false     "displayNum": 10,        					//必須 默認 10 每頁顯示行數     "groupDataNum":6,        					//可選 默認 10 組數     sort:false,         					// 點擊表頭是否排序 true/false --- 默認false     search:false,         					// 默認為false 沒有搜索     lang:{      gopageButtonSearchText:"搜索"     }   }   var cs = new KingTable(null,userOptions);  } }); 

3、ajax方法參數中不指定dataType,后臺設置返回類型為"application/json"。這樣jquery就會根據mime類型來智能判斷,并自動解析成json對象。

	//Java代碼:后臺獲取單個數控定位器的歷史表格的數據	public void getHistorySingleData() throws IOException{		HttpServletRequest request = ServletActionContext.getRequest();		HttpServletResponse response = ServletActionContext.getResponse();		response.setHeader("Content-type", "text/html;charset=UTF-8");		response.setContentType("application/json;charset=utf-8");		String deviceName = request.getParameter("deviceName");		String startDate= request.getParameter("startDate");		String endDate = request.getParameter("endDate");		SingleHistoryData[] singleHistoryData = chartService.getHistorySingleData(deviceName,startDate, endDate);		System.out.println(singleHistoryData.length);		System.out.println(JSONArray.fromObject(singleHistoryData).toString());//打?。篬{"time":"2016-11-11 10:00:00","state":"運行","ball":"鎖緊",....},{"time":"2016-11-11 10:00:05","state":"運行","ball":"鎖緊",....},{},{}....]查到幾條singleHistoryData對象就打印幾個對象的信息{"time":"2016-11-11 10:00:05","state":"運行","ball":"鎖緊",....}		response.getWriter().print(JSONArray.fromObject(singleHistoryData).toString());	}
 /*js代碼:頁面首次加載時,顯示規定時間段的數據*/ 	var data1 = [];	var deviceName=$("body").attr("id");  var startDate = $("#startDate").val("2000-01-01 00:00:00"); var endDate = $("#endDate").val("2018-01-01 00:00:00"); $.ajax({  url:"/avvii/chart/getHistorySingleData",  type:"post",  data:{   "deviceName":deviceName,   "startDate": "2000-01-01 00:00:00",   "endDate": "2018-01-01 00:00:00"  },  success: function (data) { 	 alert(data);//---->彈出[object Object],[object Object],[object Object][object Object],[object Object],[object Object]……后臺傳過來幾條singleHistoryData對象就打印幾個json對象:[object Object]   for(var i = 0; i < data.length; i++){	      	  	  var name = data[i]['time'];	 	  var state = data[i]['state'];	 	  var ball = data[i]['ball'];	 	  var xd = data[i]['xd'];	 	  var yd = data[i]['yd'];	 	  var zd = data[i]['zd'];	 	  var xf = data[i]['xf'];	 	  var yf = data[i]['yf'];	 	  var zf = data[i]['zf'];     data1[i] = {name:name,state:state,ball:ball,xd:xd,yd:yd,zd:zd,xf:xf,yf:yf,zf:zf};   }		 if(data.length != 10){			 for(var j=0;j<(10-((data.length)%10));j++){    //補全最后一頁的空白行,使表格的長度保持不變				 data1[j+data.length] = {name:" ",state:"",ball:"",xd:"",yd:"",zd:"",xf:"",yf:"",zf:""}; 			 }		 }   var userOptions = {     "id":"kingTable",        				//必須 表格id     "head":["時間","運行狀態","球頭狀態","X向位置/mm","Y向位置/mm","Z向位置/mm","X向承載力/Kg","Y向承載力/Kg","Z向承載力/Kg"], //必須 thead表頭     "body":data1,         				//必須 tbody 后臺返回的數據展示     "foot":true,         					// true/false 是否顯示tfoot --- 默認false     "displayNum": 10,        					//必須 默認 10 每頁顯示行數     "groupDataNum":6,        					//可選 默認 10 組數     sort:false,         					// 點擊表頭是否排序 true/false --- 默認false     search:false,         					// 默認為false 沒有搜索     lang:{      gopageButtonSearchText:"搜索"     }   }   var cs = new KingTable(null,userOptions);  } }); 

注意:只要前臺或者后臺有一處設置了返回json對象,就無需使用eval()方法或$.parseJSON()方法解析了,再解析就出錯。

總結:以上幾種方式,推薦使用第二種方式,方便且不易出錯。

五.eval()方法

var json對象=eval('('+json數據+')');大括號括起來的內容被eval()執行后返回的是一個JSON對象。

eval函數的工作原理:eval函數會評估一個給定的含有JavaScript代碼的字符串,并且試圖去執行包含在字符串里的表達式或者一系列的合法的JavaScript語句。eval函數將把最后一個表達式或者語句所包含的值或引用作為返回值。

為什么要 eval這里要添加 “("("+data+")");//”呢?

原因在于:eval本身的問題。 由于json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。加上圓括號的目的是迫使eval函數在處理JavaScript代碼的時候強制將括號內的表達式(expression)轉化為對象,而不是作為語句(statement)來執行。舉一個例子,例如對象字面量{},如若不加外層的括號,那么eval會將大括號識別為JavaScript代碼塊的開始和結束標記,那么{}將會被認為是執行了一句空語句。

以上這篇基于$.ajax()方法從服務器獲取json數據的幾種方式總結就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久亚洲国产精品成人av秋霞| 国产精品久久久久影院日本| 欧美日韩国产第一页| 中文字幕亚洲字幕| 日韩在线视频网| 欧美日韩综合视频网址| 国产精品视频在线观看| 一区二区欧美激情| 亚洲综合中文字幕在线观看| 日韩av在线网页| 欧美激情视频一区| 岛国av一区二区在线在线观看| 国产精品99久久99久久久二8| 欧美怡红院视频一区二区三区| 亚洲一区二区三区成人在线视频精品| 亚洲欧美第一页| 国产精品极品在线| 亚洲图片制服诱惑| 国产精品三级美女白浆呻吟| 日韩中文字幕免费看| 久久精品视频在线观看| 亚洲欧美三级在线| 欧美性xxxxxx| 亚洲日本aⅴ片在线观看香蕉| 亚洲欧美精品伊人久久| 亚洲高清在线观看| 国内精品久久久久久久| 97视频色精品| 亚洲韩国欧洲国产日产av| 久久最新资源网| 91精品国产高清自在线看超| 亚洲xxx自由成熟| 亚洲第一视频在线观看| 亚洲美女av黄| 欧美亚洲国产视频小说| 91精品国产91久久久久久| 欧美高清在线播放| 超在线视频97| 国产精品久久久久久久久男| 亚洲色图欧美制服丝袜另类第一页| 精品女同一区二区三区在线播放| 亚洲欧洲av一区二区| 日韩精品免费一线在线观看| 日韩中文字幕网| 色偷偷噜噜噜亚洲男人的天堂| 欧美日韩中文在线| 日韩电影免费观看在线| 日韩免费av片在线观看| 国产日韩欧美一二三区| 欧美老少做受xxxx高潮| www.99久久热国产日韩欧美.com| 日韩欧美在线视频免费观看| 日韩欧美在线免费观看| 国产精品自产拍在线观看中文| 日韩欧美国产激情| 国产精品网站大全| 精品香蕉在线观看视频一| 国产精品com| 久久久97精品| 亚洲最大成人网色| 亚洲色图校园春色| 亚洲а∨天堂久久精品喷水| 欧美激情日韩图片| 青青草国产精品一区二区| 中文字幕日本精品| 国产成人精品久久| 亚洲福利视频久久| 久久精品视频在线观看| 国产精品久久一| 成人精品福利视频| 色多多国产成人永久免费网站| 国产视频久久久久久久| 国产精品黄页免费高清在线观看| 在线观看国产精品日韩av| 91福利视频在线观看| 91产国在线观看动作片喷水| 日本久久中文字幕| 日韩av影片在线观看| 国产视频久久久| 久久精品国产电影| 一区三区二区视频| 欧美另类交人妖| 亚洲欧美国产va在线影院| 最近2019中文字幕第三页视频| 欧美特黄级在线| 亚洲精品videossex少妇| 日韩欧美高清在线视频| 亚洲在线视频观看| 国产精品视频专区| 国产中文字幕日韩| 亚洲人精选亚洲人成在线| zzijzzij亚洲日本成熟少妇| 九色精品免费永久在线| 国产精品丝袜一区二区三区| 一区二区三区视频在线| 美日韩丰满少妇在线观看| 日韩欧美成人免费视频| 日韩高清人体午夜| 亚洲电影第1页| 中文在线不卡视频| 91成人免费观看网站| 91在线观看免费高清完整版在线观看| 国产中文欧美精品| 97免费中文视频在线观看| 伊人久久大香线蕉av一区二区| 国产成人精品免费久久久久| 国产91精品最新在线播放| 久久69精品久久久久久久电影好| 9.1国产丝袜在线观看| 欧美综合在线观看| 欧美激情视频一区二区三区不卡| 国产免费亚洲高清| 精品视频www| 日韩女在线观看| 欧美成人国产va精品日本一级| 日韩免费高清在线观看| 国产精品激情av在线播放| 超碰91人人草人人干| 国产精品嫩草影院久久久| 国产精品十八以下禁看| 亚洲欧美综合精品久久成人| 中文字幕少妇一区二区三区| 国产精品视频公开费视频| 亚洲性av网站| 久久99精品国产99久久6尤物| 亚洲白虎美女被爆操| 欧美日韩ab片| 精品动漫一区二区| 97视频在线观看免费| 中文字幕亚洲色图| 日韩成人激情视频| 国产精品一区二区三区成人| 欧美日韩在线视频一区| 国产欧美最新羞羞视频在线观看| 人人做人人澡人人爽欧美| 日韩高清电影好看的电视剧电影| 91精品国产自产91精品| 97久久国产精品| 久久国产精品影片| 欧美日韩亚洲网| 国内外成人免费激情在线视频网站| 美女国内精品自产拍在线播放| 日韩美女福利视频| 亚洲午夜av久久乱码| 亚洲嫩模很污视频| 国产精品夜间视频香蕉| 狠狠操狠狠色综合网| 国产精品99久久久久久人| 久久久久久久久网站| 97在线视频一区| 久久精品视频免费播放| 成人免费观看49www在线观看| 亚洲人成人99网站| www.亚洲一区| 精品欧美一区二区三区| 欧洲午夜精品久久久| 久久综合免费视频| 亚洲欧美日韩视频一区| 国产精品人成电影| 国产亚洲一区精品| 国产精品一区二区久久久| 欧美激情国产精品| 九九久久久久久久久激情| 午夜精品福利电影|