例子

王朝学院·作者佚名  2016-08-28  
宽屏版  字体:  |  |  | 超大  

写在前面的话xmlHttPRequest对象的open方法的第一个参数为request-type,取值可以为get或post.本篇介绍get请求.

get请求的目的,主要是为了获取数据.虽然get请求可以传递数据,但传递数据的目的是为了告诉服务器,给我们什么内容.

使用get请求时,参数都是随url进行传递的.

使用get请求时,容易被缓存,需注意缓存问题.

使用get请求时,服务器端请使用Request.QueryString[data]来获取数据.

发现的问题我们在《完整的Ajax实例》一文中使用的就是get请求,当时遇到以下问题:

如何创建在大部分浏览器中都能运行的xmlhttpRequest对象.使用get请求时存在缓存问题中文乱码问题其中,第一个问题,在《XMLHttpRequest对象》一文中已经解决;

对于第二个问题,产生的原因是:

get请求会每次访问缓存,看其中是否有匹配的url,如果有,则返回缓存中的url,如果没有,则向服务器发出请求.

解决方案:

1.在url上加个动态的变化参数,以求每次访问的是不同的url,这样每次都会向服务器发出新的请求.

对于第三个问题,我们首先来看下产生乱码的原因:

xmlHttp返回的数据默认是uft-8,如果客户端页面是gb2312或其他编码,就会产生乱码

解决方案:

1.若客户端是gb2312,则在输出时,指定输出流编码

2.客户端和服务器端都使用utf-8编码

3.务必使用encodeURIComponent方法对参数进行编码

注意看例子:

例子页面HTML文件没有变化,变化的知识js代码,代码如下:

<script type="text/javascript">

function btn_click() {

//创建XMLHttpRequest对象

var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");

//获取值

var username = document.getElementById("txt_username").value;

var age = document.getElementById("txt_age").value;

//配置XMLHttpRequest对象//使用encodeURIComponent方法,对获取的参数进行编码

//添加参数,以求每次访问不同的url,以避免缓存问题xmlHttp.open("get", "Get.aspx?username=" + encodeURIComponent(username)

+ "&age=" + encodeURIComponent(age) + "&random=" + Math.random());

//设置回调函数

xmlHttp.onreadystatechange = function () {

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

document.getElementById("result").innerHTML = xmlHttp.responseText;

}

}

//发送请求,因为参数都在URL里,所以此处发送null

xmlHttp.send(null);

}

</script>

服务器端:

protected void Page_Load(object sender, EventArgs e)

{

Response.Clear();

string username = Request.QueryString["username"];

string age = Request.QueryString["age"];

Response.Write("姓名:'" + username + "'<br/>年龄:" + age + "<br/>时间:'" + DateTime.Now.ToString() + "'");

Response.End();

}

//来源于http://www.cnblogs.com/oneWord/archive/2011/06/04/2072585.html

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有