Ajax基础的定义和操作,IE浏览器关于ajax的缓存机制

By admin in 4858美高梅 on 2019年4月12日

  IE浏览器对于同贰个URubiconL只回去相同结果。因为,在暗中认可景况下,IE会缓存ajax的呼吁结果。对于同三个U酷路泽L地址,在缓存过期事先,唯有首先次呼吁会真的发送到服务端。半数以上景况下,我们运用ajax是希望达成部分刷新的,所以那就拉拉扯扯到一个修正的题材。

本文介绍了Ajax最基础的操作和概念,希望能支援大家发轫认识Ajax

AJAX简单介绍

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)
AJAX是1种用于创立快捷动态网页的技巧;
从后台提取数据利用创设动态节点,把后台数据展现在页面中。

一、什么是ajax?

  如若想每回都赢得到最新数据,大家只需保险每一回传入的U大切诺基L差别。最简便的办法就是经过给url拼接参数。利用math函数的random()方法生成随机数。

一.基本概念


AJAX = Asynchronous JavaScript and XML(异步的JavaScript 和 XML)。

AJAX 不是新的编制程序语言,而是一种采用现有标准的新措施。

AJAX
最大的长处是在不重复加载整个页面包车型客车情景下,能够与服务器沟通数据并创新部分网页内容。

AJAX 不须求别的浏览器插件,但要求用户同意JavaScript在浏览器上执行。


功能:向服务器异步发送和接收数据,然后用JavaScript解析。

基本标准:名称继承于用来确立和出殡和埋葬请求的JavaScript对象:XMLHttpRequest。

规范的五个等级

  • Level一:基础级别功能,全数主流浏览器都实现了。

  • Level二:扩张了初期的职能,让它更便于与form成分同盟,并帮忙部分正式。

4858美高梅 1

Ajax工作规律

</br>

XMLHttpRequest不难介绍

Ajax技术的基本是XMLHttpRequest对象(简称XHLX570),XMLHttpRequest是二个JavaScript对象,它提供了一种简单的格局来检索UBMWX五L中的数据。能够经过使用XHR对象获取到服务器的数据,然后再通过DOM将数据插入到页面中呈现。即使名字中隐含XML,但Ajax通信与数据格式非亲非故,所以大家的多寡格式能够是XML或JSON等格式。

XMLHttpRequest对象用于在后台与服务器沟通数据,具体功效如下:

  • 在不另行加载页面包车型的士境况下更新网页
  • 在页面已加载后从服务器请求数据
  • 在页面已加载后从服务器接收数据
  • 在后台向服务器发送数据

AJAX(Asynchronous JavaScript and XML):异步的JavaScript和XML。

  比如访问百度www.baidu.com,我们就足以把地址写成www.baidu.com?t=Math.random();或许?t=new
Date().get提姆e();

2.创建XMLHttpRequest对象


XMLHttpRequest 是AJAX 的基础。

富有现代浏览器均扶助XMLHttpRequest 对象(IE5 和IE六 使用ActiveXObject)。

Ajax基础的定义和操作,IE浏览器关于ajax的缓存机制。XMLHttpRequest
用于在后台与服务器沟通数据。这象征能够在不重复加载整个网页的意况下,对网页的某部分进行立异。

始建XMLHttpRequest 对象的语法:

variable=new XMLHttpRequest();

老版本的Internet,Explorer (IE5 和IE陆)使用 ActiveX 对象:

variable=new ActiveXObject(“Microsoft.XMLHTTP”);

</br>

创建 XMLHttpRequest 对象

拥有现代浏览器(IE七+、Firefox、Chrome、Safari 以及 Opera)均内建
XMLHttpRequest 对象。
老版本的 Internet Explorer (IE五 和 IE六)使用 ActiveXObject。

代码示例:

// Creates a XMLHttpRequest object.
var xhr = new XMLHttpRequest();

非凡浏览器代码示例:

 var xhr;
//根据标准的浏览器是否支持标准的创建方法来创建对象
//先判断浏览器是否具备XMLHttpRequest()方法;
if(window.XMLHttpRequest){
    //有,表示当前是标准浏览器;
     xhr = new XMLHttpRequest(); // 支持IE8,9;w3c标准。
}else{
    //无,表示不是标准浏览器, 是 IE 5,6,7;
    //在IE5,6,7这些老版的浏览器中,Ajax组件是放在ActiveXObject组件库中的,需要传入Micrsoft.XMLHTTP 这个参数才能返回出这个组件。
    xhr = new ActiveXObject('Micrsoft.XMLHTTP');
}

AJAX不是新的编制程序语言,而是1种选取现有标准的新措施。是在不须要再行加载网页的意况下,与服务器实行数据交互并更新部分网页的技巧。

 

3.向服务器发送请求


XMLHttpRequest 对象用于和服务器沟通数据。

向服务器发送请求

如需将请求发送到服务器,我们接纳XMLHttpRequest 对象的 open() 和
send() 方法:

xmlhttp.open(“GET”,”ajax_info.txt”,true);
xmlhttp.send();

4858美高梅 2

open&send


Ajax 向服务器发送请求

创设XHPRADO对象后,将请求发送到服务器,使用 XMLHttpRequest 对象的 open()
send()方法:

代码示例:

//GET请求
    //如果有参数,则把请求参数直接拼接在url之后
    xhr.open('GET','JSON.html',true);   
//发送请求:
    //GET 请求send()参数可以不写,最好在send(null)参数中写上null
    xhr.send();

open(method,url,async)方法:

  • method:请求的品种;GET 或 POST
  • url:文件在服务器上的职位
  • async:true(异步)或 false(同步)

send(string)方法:

  • 将请求发送到服务器;string:仅用于 POST 请求

Eg:当你在摸索引擎搜索关键字的时候,JavaScript就向服务器交由字段,并回到拿到的数目,实时更新网页中的搜索结果。

 

3.1 GET 还是POST?

与POST 比较,GET 更简约也更快,并且在超越1全场馆下都能用。

可是,在以下情形中,请使用POST 请求:

· 无法运用缓存文件(更新服务器上的公文或数据库)

· 向服务器发送多量数码(POST 未有数据量限制)

· 发送包含未知字符的用户输入时,POST 比 GET 更安定也更有限支撑

POST适用于每四个请求都会导致服务器终端产生某种变化的场面。


GET 请求

八个大概的 GET 请求 (可能赢得的是缓存的结果):

xhr.open("GET","/try/ajax/demo_get.php",true);
xhr.send();

为了防止那种境况,请向 UGL450L 添加2个唯1的 ID:

xhr.open("GET","/try/ajax/demo_get.php?t=" + Math.random(),true);
xhr.send();

盼望因此 GET 方法发送信息,请向 ULANDL 添加音信:

xhr..open("GET","/try/ajax/demo_get2.php?fname=Henry&lname=Ford",true);
xhr.send();

2、怎么着选用AJAX?

  ********************************分割线**********************************

3.1.1 GET 请求

七个简短的GET 请求:

实例

xmlhttp.open(“GET”,”/try/ajax/demo_get.php”,true); xmlhttp.send();

在上头的例证中,您恐怕取得的是缓存的结果。

为了制止那种景况,请向ULacrosseL 添加3个唯1的 ID:

实例

xmlhttp.open(“GET”,”/try/ajax/demo_get.php?t=” +
Math.random(),true);
xmlhttp.send();

假如你希望通过GET 方法发送音讯,请向 U奥德赛L 添加音信:

实例

xmlhttp.open(“GET”,”/try/ajax/demo_get2.php?fname=Henry&lname=Ford”,true);
xmlhttp.send();


POST 请求

1个粗略 POST 请求:

xhr..open("POST","/try/ajax/demo_post.php",true);
xhr.send();

若是急需像 HTML 表单这样 POST 数据,就利用 setRequestHeader() 来添加
HTTP 头。然后在 send() 方法中明确所愿意发送的数据:

xhr.open("POST","/try/ajax/demo_post2.php",true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("fname=Henry&lname=Ford");

setRequestHeader(header,value)方法:

  • 向请求添加 HTTP 头;header: 规定头的名号
  • value: 规定头的值

1、XHR的创建

  谈起此地,无妨复习一下ajax的骨干用法。

3.1.2 POST 请求

一个归纳POST 请求:

实例

xmlhttp.open(“POST”,”/try/ajax/demo_post.php”,true);
xmlhttp.send();

倘诺供给像HTML 表单这样 POST 数据,请使用 setRequestHeader()
来添加HTTP 头
。然后在 send() 方法中鲜明您希望发送的数量:

实例

xmlhttp.open(“POST”,”/try/ajax/demo_post2.php”,true);
xmlhttp.setRequestHeader(“Content-type”,”application/x-www-form-urlencoded”);
xmlhttp.send(“fname=Henry&lname=Ford”);


GET 还是 POST?

与 POST 相比较,GET 更简约也更加快,并且在超越3/陆情状下都能用。
唯独,在以下情形中,请使用 POST 请求:

  • 不能够使用缓存文件(更新服务器上的文书或数据库)
  • 向服务器发送大批量多少(POST 未有数据量限制)
  • 发送蕴涵未知字符的用户输入时,POST 比 GET 更稳定也更可信

XMLHttpRequest的功能是用于在后台与服务器交流数据。

*Ajax创设对象:   

 var xmlhttp;
 if (window.XMLHttpRequest){
    //IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }  else{
    //IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }                  
三.壹.3 获取和安装标头setRequestHeader(header,value)

意义:可以设置发送给服务器的请求标头Header,和读取服务器响应中的标头。

XMLHttpRequest对象中与标头有关的主意:

setRequestHeader(<header>,<value>)——用钦赐值设置标头;
getResponseHeader(<header>)——获取内定标头的值;
getAllResponseHeaders()——以单个字符串格局获得具有标头;

· header: 规定头的名称· value: 规定头的值

适用的地点:

一.遮盖请求的HTTP方法 X-HTTP-Method-Override
场景:许多主流的Web技术只帮忙GET和POST方法,而且不少防火墙只允许GET和POST请求通过。为了让请求以大家想要的款型处理。
用法:使用X-HTTP-Method-Override标头,值为想要使用的HTTP方法。

httpRequest.setRequestHeader("X-HTTP-Method-Override","DELETE");  

注意:那些措施要在调用open()之后设置,否则会抛出二个指鹿为马。

贰.禁止使用内容缓存: Cache-Control
场景:1些浏览器会缓存通过Ajax请求所获得的始末,导致脚本的转移不可能立即反映到浏览器中。
用法:使用Cache-Control标头,设置值为no-cache

httpRequest.setRequestHeader("Cache-Control","no-cache");  

url – 服务器上的文本

open() 方法的 url 参数是服务器上文件的地点:

xhr.open("GET","ajax_test.html",true);

该公文能够是其余类型的文本,比如 .txt 和
.xml,或许服务器脚本文件,比如 .asp 和 .php
(在扩散响应以前,能够在服务器上推行任务)。

IE5和IE陆使用ActiveXObject,其他浏览器(IE7+、Firefox、Chrome、Safari以及Opera)均内建XMLHttpRequest对象。

*Ajax请求:

//GET请求:
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();
//POST请求:
xmlhttp.open("POST","demo_post.asp",true);
xmlhttp.send();

三.二 url – 服务器上的文书

open() 方法的 url 参数是服务器上文件的地点:

xmlhttp.open("GET","ajax_test.html",true);

该公文能够是任何类型的文件,比如.txt 和 .xml,恐怕服务器脚本文件,比如
.asp 和.php (在扩散响应在此之前,能够在服务器上实施职务)。


Async=true

当使用 async=true 时,规定在响应处于 onreadystatechange
事件中的就绪状态时实行的函数:

xhr.open("GET","/try/ajax/ajax_info.txt",true);
xhr.send();
xhr.onreadystatechange=function()
{
    if (xhr.readyState==4 && xhr.status==200)
    {
        document.getElementById("myDiv").innerHTML=xhr.responseText;
    }
}

语法:

GET 还是 POST?

与 POST 比较,GET 更简单也越来越快,并且在大多数情景下都能用。

可是,在以下景况中,请使用 POST 请求:

  • 没辙使用缓存文件(更新服务器上的文书或数据库)
  • 向服务器发送多量数量(POST 未有数据量限制)
  • 发送包罗未知字符的用户输入时,POST 比 GET 更安定也更保险

3.3 异步 -True 或False?

AJAX 指的是异步 JavaScript 和XML(Asynchronous JavaScript and XML)。

XMLHttpRequest 对象借使要用以 AJAX 的话,其open() 方法的 async
参数必须安装为 true:

xmlhttp.open("GET","ajax_test.html",true);

对此web
开发职员来说,发送异步请求是叁个宏伟的提高。很多在服务器执行的职务都1贰分困难。AJAX
出现从前,那可能会挑起应用程序挂起或结束。

通过AJAX,JavaScript 无需等候服务器的响应,而是:

· 在等候服务器响应时进行其它脚本

· 当响应就绪后对响应实行处理

</br>

Async=false

不引入应用 async=false,因为JavaScript
会等到服务器响应就绪才继续执行。假如服务器繁忙或舒缓,应用程序会挂起或终止。当使用
async=false 时,不要编写 onreadystatechange 函数 把代码放到 send()
语句后边即可::

xhr.open("GET","/try/ajax/ajax_info.txt",false);
xhr.send();
document.getElementById("myDiv").innerHTML=xhr.responseText;

Avriable = new XMLHttpRequest():   //创建XMLHttpRequest对象

*Ajax响应:

要赢得服务器的响应,须求利用XMLHttpRequest 对象的 responseText 或
responseXML 属性。

ResponseText:获得字符串形式的响应数据。

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

ResponseXML:得到XML格局的响应数据。

要是来自服务器的响应是 XML,而且须求用作 XML 对象开始展览辨析。

4. 服务器 响应


Ajax 服务器响应

赢得来自服务器的响应,使用 XMLHttpRequest 对象的 responseText 或
responseXML 属性。

responseText 属性: 获得字符串格局的响应数据。

document.getElementById("myDiv").innerHTML=xhr.responseText;

responseXML 属性: 获得 XML 形式的响应数据。且须求用作 XML
对象开始展览辨析,使用 responseXML 属性:

xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
{
    txt=txt + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("myDiv").innerHTML=txt;

*Ajax – onreadystatechange : 

当呼吁被发送到服务器时,我们须要执行一些基于响应的天职。

每当 readyState 改变时,就会触发 onreadystatechange 事件。

在 onreadystatechange
事件中,我们规定当服务器响应已搞好被处理的备选时所推行的职务。

当 readyState 等于 4 且状态为 200 时,表示响应已就绪:

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }

 

4.1 AJAX – onreadystatechange 事件

此地讲的就是产生响应的前提条件

当呼吁被发送到服务器时,大家供给举办1些依据响应的天职。

每当readyState 改变时,就会触发 onreadystatechange 事件。

readyState 属性存有 XMLHttpRequest 的意况音讯。

上面是XMLHttpRequest 对象的多个重点的质量:

4858美高梅 3

XMLHttpRequest对象的天性

AJAX – onreadystatechange 事件

当呼吁被发送到服务器时,我们需求举行1些遵照响应的天职。
每当 readyState 改变时,就会触发 onreadystatechange 事件。
readyState 属性存有 XMLHttpRequest 的情形音讯。
上面是 XMLHttpRequest 对象的多个主要的性质:

  • onreadystatechange : 存款和储蓄函数(或函数名),每当 readyState
    属性改变时,就会调用该函数。
  • readyState : 存有 XMLHttpRequest 的情状。从 0 到 四 产生变化。
    0: 请求未初始化
    1: 服务器连接已创造
    二: 请求已接受
    4858美高梅,三: 请求处理中
    4: 请求已成功,且响应已就绪
  • status
    200: “OK”
    404: 未找到页面

在 onreadystatechange
事件中,我们规定当服务器响应已做好被处理的预备时所实施的任务。
当 readyState 等于 四 且景况为 200 时,表示响应已就绪:

xhr.onreadystatechange=function(){
  if (xhr.readyState==4 && xhr.status==200){
    document.getElementById("myDiv").innerHTML=xhr.responseText;
    }
}

选用回调函数:
回调函数是一种以参数情势传递给另一个函数的函数。
设若你的网址上存在多少个 AJAX 职分,那么您应该为创立 XMLHttpRequest
对象编排三个规范的函数,并为每一个 AJAX 职务调用该函数。
该函数调用应该包括 U汉兰达L 以及发生 onreadystatechange
事件时实施的任务(每趟调用只怕并辔齐驱):

function myFunction(){
    loadXMLDoc("/try/ajax/ajax_info.txt",function(){
        if (xmlhttp.readyState==4 && xmlhttp.status==200){
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
    });
}

Avriable = new ActiveXObject(“Microsoft.XMLHttp”);   //   IE5和IE6使用ActiveX对象

四.一.1 简单景况

在onreadystatechange
事件中,大家规定当服务器响应已做好被处理的备选时所实施的天职。

当**readyState 等于 肆 且情形为 200 **时,表示响应已就绪:

实例

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
 document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }

回顾上面三种情况,真实意况中应有如此写:

四.一.二 使用回调函数

回调函数是1种以参数情势传递给另一个函数的函数。

假若您的网址上留存八个AJAX 任务,那么您应该为开创 XMLHttpRequest
对象编排多少个标准的函数,并为每一个AJAX 职务调用该函数。

该函数调用应该包涵 URL 以及发生 onreadystatechange 事件
时执行的天职(每一次调用或然相差相当的大):

实例

function myFunction() { 
loadXMLDoc("/try/ajax/ajax_info.txt", function() {
   if (xmlhttp.readyState==4 && xmlhttp.status==200) {
       document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
   } 
  });
}

var xmlhttp;

function loadXMLDoc(url,cfunc){
  if(window.XMLHttpRequest){
// IE7+, Firefox, Chrome, Opera, Safari 代码
     xmlhttp=new XMLHttpRequest();
  }else{// IE6, IE5 代码
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }  //创建对象

xmlhttp.onreadystatechange=cfunc;
//用cfunc调用响应函数

xmlhttp.open("GET",url,true);
xmlhttp.send();

}

function myFunction()//响应执行时的操作
{
       loadXMLDoc("/try/ajax/ajax_info.txt",function()
       {
              if (xmlhttp.readyState==4&& xmlhttp.status==200)
              { 
                  document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
               }

       });

}

4858美高梅 4

服务器常见景色


var xmlhttp;

4.贰 服务器响应对象

如需获得来自服务器的响应,请使用XMLHttpRequest 对象的 **responseText
responseXML **属性。

if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari

responseText:获得字符串格局的响应数据。

xmlhttp=new XMLHttpRequest();

responseXML:得到 XML 格局的响应数据。

}else{

4.2.1 responseText 属性

若果来自服务器的响应并非XML,请使用 responseText 属性。

responseText 属性重返字符串方式的响应,由此你能够这么使用:

实例

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

// code for IE6, IE5

4.2.2 responseXML 属性

比方来自服务器的响应是XML,而且须要作为 XML
对象开展解析,请使用responseXML 属性:

实例

请求 cd_catalog.xml 文件,并分析响应:

xmlDoc=xmlhttp.responseXML; 
txt=""; 
x=xmlDoc.getElementsByTagName("ARTIST"); 
for (i=0;i<x.length;i++) { 
    txt=txt + x[i].childNodes[0].nodeValue + "<br>"; 
} 
document.getElementById("myDiv").innerHTML=txt;

</br>

xmlhttp=new ActiveXObject(“Microsoft.XMLHTTP”);

伍.总结实例


<!DOCTYPE html>
<html>
<head>
<script>

var xmlhttp;

function loadXMLDoc(url,cfunc)
{
 //创建对象
------------------------------------------------------
if (window.XMLHttpRequest)
  {// IE7+, Firefox, Chrome, Opera, Safari 代码
  xmlhttp=new XMLHttpRequest();
  }
else
  {// IE6, IE5 代码
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  } 

 //用cfunc调用响应函数
------------------------------------------------------  
xmlhttp.onreadystatechange=cfunc;

// 向服务器发送请求
------------------------------------------------------  
xmlhttp.open("GET",url,true);
xmlhttp.send();
}

//服务器响应函数
------------------------------------------------------
function myFunction()
{
    //传入URL和响应后执行方法
    loadXMLDoc("/try/ajax/ajax_info.txt",function()
    {
       //响应条件
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            //获得字符串形式的响应数据
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
        }
    });
}
</script>
</head>
<body>

<div id="myDiv"><h2>使用 AJAX 修改文本内容</h2></div>
<button type="button" onclick="myFunction()">修改内容</button>

</body>
</html>

}

2、XHR请求

将呼吁发送到服务器,使用XMLHttpRequest对象的open()和send()方法。

open(method,url,async):规定请求的品种、U瑞虎L以及是或不是异步处理请求。

method:请求的连串(GET或POST)

ulr:文件在服务器上的岗位

async:true(异步)或false(同步)

send(string):将呼吁发送到服务器。

string:仅用于POST请求

改使用GET依旧POST,具体请查看两者的区分:http://www.w3school.com.cn/tags/html\_ref\_httpmethods.asp

一个简练的GET:

xmlhttp.open(“GET”,”demo_get.asp?t=” +Math.random(),true);

xmlhttp.send();

二个简单的POST:

xmlhttp.open(“POST”,”demo_post.asp”,true);xmlhttp.send();

万壹需求像HTML表单那样POST数据,请使用setRequestHeader()来添加HTTP头。然后在send()方法中规定您希望发送的数额:

xmlhttp.open(“POST”,”ajax_test.asp”,true);

xmlhttp.setRequestHeader(“Content-type”,”application/x-www-form-urlencoded”);

xmlhttp.send(“fname=Bill&lname=Gates”);

setRequestHeader(header,value):向请求添加HTTP头

header:规定头的名号

value:规定头的值

3、XHR响应

取得来自服务器的响应,使用XMLHttpRequest对象的responseText或responseXML属性

responseText:获得字符串情势的响应数据

responseXML:获得XML格局的响应数据

以xml为例:

xmlDoc=xmlhttp.responseXML;

txt=””;

x=xmlDoc.getElementsByTagName(“ARTIST”);

for (i=0;i<x.length;i++)

{

text = text + x[i].childNode[0].nodeValue + “<br / >”;

}

document.getElementById(“myDiv”).innerHTML=txt;

4、Onreadystatechange事件

readyState属性存有XMLHttpRequest的动静音信,当readyState改变时,就会触发onreadystatechange事件。

下边是XMLHttpRequest对象的八个第三的性子:

Onreadystatechange:存储函数(或函数名),每当readyState属性改变时,就会调用该函数。

readyState:存有XMLHttpRequest的情景。从0到4产生变化。

0:请求未开首化

1:服务器连接已创建

二:请求已接受

三:请求处理中

4:请求已形成,且响应已就绪

Status:200: “OK”;40四:未找到页面

当readyState等于四且动静为200时,表示响应已就绪:

xmlhttp.onreadystatechange=function(){

if (xmlhttp.readyState==4 && xmlhttp.status==200){

document.getElementById(“myDiv”).innerHTML=xmlhttp.responseText;

}

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有