转载:http://www.cnblogs.com/yaoguipeng/archive/2011/06/25/2090349.html
为什么会有AJAX?通俗一点讲,当我们观看视频时,如果我们点击了下方的留言板的下一页,我们不希望整个页面都刷新,这样会使整个视频从服务器重
新加载进来,而我们实际需要的只是留言本的刷新即可,也就是页面部分刷新,这个过程其实也是有向服务器发出请求的,只是请求的内容不包含视频内容而已。
AJAX是asynchronized javascript and
xml的简写(异步javascript和xml)那么异步请求是有谁发出的呢?后面会说到。先来了解下异步的概念。我想异步是指浏览器向服务器发出请求
后不用理服务器响应了没有,就可以发出下一个请求(跟同步相比较而言),而同步则是指浏览器发出一个请求必须在服务器回应后才能发出下一个请求,前后发出
的两次请求有着时间关系, 另外,找了一下同步通讯和异步通讯的概念,应该有助于理解。
同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。
那么究竟xml在异步请求中发挥了一个什么样的作用呢?
其实AJAX中发出的异步请求就是由xml中的xml HttpRequest发出的,所以xml HttpRequest就是一个异步对象,他不像web Client是同步的,xml HttpRequest可以理解成也是向web service发出请求。
首先在html页面用javascript创建一个xm
lhttp对象,用这个对象向服务器发出请求,(实际上是请求ashx页面,也叫做执行页面),服务器返回请求时也是用xml http接受,xml
HttpRequest. responseText(),接受前要判断状态是否正确。
下面来看一下怎么实现一个AJAX功能。以金额转换为例,下面是money.ashx
页面
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string moneyType = context.Request["mt"].ToString();
string amount = context.Request["amount"].ToString();
string result = "0";
switch (moneyType)
{
case "1":
result = Convert.ToString(0.5 * Convert.ToInt32(amount));
break;
case "2":
result = Convert.ToString(5 * Convert.ToInt32(amount));
break;
case "3":
result = Convert.ToString(10 * Convert.ToInt32(amount));
break;
default:
result = amount;
break;
}
context.Response.Write(result);
}
money.html页面,这个自己来写一写:
///////////////////////////////////////////////////////////////////////////
var xhttp = new Active XObject("Microsoft.XML HTTP");
if(!xhttp) {alert("创建ActiveXObject对象失败"); return false;}
xhttp.open
("post","要请求的页面","false"); //比如请求money.ashx页面,可以传参数过去
xhttp.onreadystatechange
= function(){
if(xhttp.readyState
==4) { //readyState的值会从1开始发生改变。。
if(xhttp.status
==200) {
document.getElementById("result").value = xml http.responseText;}
else{
alert("服务器返回数据失败");}
}
xml http.send();
}
重点理解请求的过程
///////////////////////////////////////////////////////////////////////////
1、首先创建一个Xml HttpRequest对象。new Active XObject("Microsoft.XML HTTP"); 是在ie中才要这样写,在其他浏览器可用new Xml HttpRequest(),更方便,更简洁。
2、检测创建是否成功,不成功则提示创建失败,否则继续执行。
3、open. 打开xml httprequest对象,打开方式,打开哪个页面,最后false(不知道为什么)
4、监测onreadystatechange事件,判断返回的readystate的值,判断status的值。
5、send.
需要注意的问题:
1、get方法和post方法
测试get和post方法前先分别清楚浏览器的缓存,这样效果比较容易理解
var xml http = new ActiveXObject("Microsoft.XML HTTP");
xml http.open("post","GetDate1.ashx",false);
xml http.open("get","GetDate1.ashx",false);
测试结果是:为了保证都在相同的条件下测试,先清除浏览器缓存,用post方法,每一次请求都被当作新的请求,它不会去用缓存中的内容 (其实也可以不用清除缓存,因为它根本就不用)
先清除浏览器缓存,用get,请求之前它会先检测
缓存中有没有相同的请求,没有的话就发出请求,有的话它就直接用缓存中的页面而不再发出请求了。这样导致的结果是,明明你代码修改了,但是在前台却总是看
不见,
即使刷新页面也是一样,这时候就要想起是缓存在作怪了,清除一下缓存就可以了。或者在get请求中每次都给它传递不同的参数过去,这样它就不会再用缓存中
的内容了。
2、为什么xml http要用个onreadystatechange检测它的状态呢?
XML HTTP是异步的,他不会像同步请求那样在服务器端拿到数据后才返回,所以要有一个事件监听他。
xml http.onreadystatechange = function(){ //onreadystatechange此事件被触发了四次
if(xml http.readyState == 1) alert("1");
if(xml http.readyState == 2) alert("2");
if(xml http.readyState == 3) alert("3");
if(xml http.readyState == 4) alert("4");
}
执行结果是点击一次按钮,1,2,3,4 依次的都会出现。
当他在服务器端的状态发生改变时,我们都能够检测到了
分享到:
相关推荐
在"AJAX各种特效演示"的压缩包中,可能包含了各种使用AJAX实现的特效实例,如动态加载内容、无刷新分页、下拉刷新、实时搜索建议等,这些都是AJAX在实际项目中的应用示例,可以帮助开发者更好地理解和学习AJAX技术。
1、ajax技术的背景 不可否认,ajax技术的流行得益于google的大力推广,正是由于google earth、google suggest以及gmail等对ajax技术的广泛应用,催生了ajax的流行。...对于这一点来说,我个人是觉得
Ajax请求会影响ASP.NET页面的生命周期,理解这一点对于优化性能和处理状态至关重要。 **Chapter 20: 提高性能** 优化Ajax应用性能包括减少HTTP请求、缓存数据、使用Partial Rendering等策略。ASP.NET AJAX提供了...
首先,我们需要理解Ajax的工作原理。Ajax的核心是XMLHttpRequest对象,它允许JavaScript在后台与服务器进行通信。当用户在搜索框中输入文字时,JavaScript监听键盘事件,一旦检测到输入变化,就触发一个Ajax请求,将...
同时,学习更多关于AJAX的基础知识,如XMLHttpRequest对象和fetch API,将有助于你更好地利用`ajax.dll`。 总之,`ajax.dll`作为一个工具,可以帮助开发者简化AJAX请求的实现。然而,使用时要确保它符合项目需求,...
首先,我们需要理解Ajax(Asynchronous JavaScript and XML)的核心概念,它允许网页部分数据的异步更新,提高用户交互性。Telerik Ajax扩展了这一概念,提供了预构建的控件和功能,如Loading Panels,这些控件在...
8. **取消请求**:在某些情况下,用户可能需要取消正在进行的请求,Ajaxtool可能提供一个`Ajaxtool.abort()`方法来实现这一点。 9. **缓存控制**:通过设置请求头,可以控制是否使用浏览器缓存,这对于动态数据的...
为了实现这一点,我们可以利用AJAX(Asynchronous JavaScript and XML)技术,结合ASP.NET控件来实现异步验证,提高用户体验。本文将深入探讨如何使用ASP.NET AJAX控件来验证用户注册时的用户名是否已被其他用户使用...
通过分析和理解这些代码,开发者可以学习如何在实际项目中应用Ajax实现自动完成功能。 总之,Ajax联想输入功能是Web开发中的重要技巧,结合JavaScript、Ajax、服务器端处理、JSON数据和DOM操作,能够显著提升用户...
首先,AJAX是一种很酷的技术,一旦采用了AJAX,就能让你的Web页面, ...角度出发,来理解AJAX,就像我在本书的第一章AJAX我也行中那样,开发 出很愚蠢,甚至都没有资格被称之为AJAX应用的纯IE,XMLHTTP应用.
本文将详细介绍Ajax的基本实现步骤,并通过具体的示例来帮助读者深入理解。 #### 二、创建XMLHttpRequest对象 首先,我们需要创建一个`XMLHttpRequest`对象。这是Ajax的核心,负责处理与服务器的所有通信。 ##### ...
在 Web2.0 的时代里,不使用一点AJAX技术的网站,就会显得很老土,很落伍。 但是,这样的理解,其实是很肤浅的。仅仅是从一个外行,从一个使用者的角度出发,来理解 AJAX,就像我在本书的第一章 AJAX 我也行中那样,...
为了实现这一点,可以使用ASP.NET AJAX控件包中的UpdatePanel和Timer控件。UpdatePanel控件用于包裹需要异步更新的内容,而Timer控件则用于触发定时更新。 **步骤**: 1. **新建Web窗体**:创建一个新的Web窗体,...
**学习AJAX高级程序设计,你需要掌握如何优化AJAX请求,处理跨域问题,理解缓存机制,以及如何结合其他技术如WebSocket实现更实时的通信。此外,了解并熟练运用相关框架和模块,可以使开发更为高效。**
2. **跨站请求伪造(CSRF)**:由于Ajax请求通常不会触发浏览器的确认提示,恶意网站可以利用这一点发起CSRF攻击。为防止此类攻击,开发者可以使用随机令牌(token)来验证请求的来源,确保只有合法的请求才能被执行。...
8. **缓存控制**:学习如何控制AJAX请求是否使用浏览器缓存,以及如何设置HTTP头来实现这一点。 9. **安全性考虑**:使用AJAX可能会引入一些安全问题,如CSRF(跨站请求伪造)和XSS(跨站脚本攻击)。了解并应用...
首先,让我们理解Ajax的核心概念。Ajax允许我们在后台与服务器交换数据并更新部分网页,而无需重新加载整个页面。在jQuery中,`$.ajax()`函数是实现Ajax请求的主要方法。该函数接受一个配置对象作为参数,其中包含了...
以上就是关于“ASP.NET AJAX开发”的主要知识点。深入理解并掌握这些内容,将使开发者能够构建出更高效、更富交互性的Web应用程序。在实际项目中,开发者还需要关注跨浏览器兼容性、安全性和无障碍访问等问题,确保...