AJAX简介

没有AJAX会怎么样?普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面,如实现显示服务器的时间
每次都要刷新页面的坏处:页面刷新打断用户操作、速度慢、增加服务器的流量压力。如果没有AJAX,
在youku看视频的过程中如果点击了“顶、踩”、评论、评论翻页,页面就会刷新,视频就会被打断

AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)是一种进行页面局部异步刷新
的技术。用AJAX 向服务器发送请求和获得服务器返回的数据并且更新到界面中,不是整个页面刷新,
而是在HTML页面中使用JavaScript创建XMLHTTPRequest对象来向服务器发出请求以及获得返回的数
据,就像JavaScript版的WebClient一样,在页面中由XMLHTTPRequest来发出Http请求和获得服务器的
返回数据,这样页面就不会刷新了。XMLHTTPRequest是AJAX的核心对象

XMLHTTPRequest对象

AJAX的编写流程:
1.创建一个ActiveXObject类
2.open打开对象,并指定提交类型,请求页面
3.判断状态,进行相应的处理
4.对象send请求

开发一个AJAX功能需要开发服务端和客户端两块程序。以一个显示服务端时间为例
首先开发一个GetDate1.ashx,输出当前时间,在HTML页面中放一个按钮,在按钮的onclick中
创建XMLHTTP向GetDate1.ashx发送请求,获得返回的数据并且显示到界面上
面试常考:不使用UpdatePanel、JQuery等AJAX库编写一个AJAX程序
也可以在xmlhttp.open中向服务器传递参数:xmlhttp.open("POST","GetDate1.ashx?id=1", false),
如果传递给服务器的请求里有中文,则需要使用Javascript函数encodeURI来进行URL编码

案例1:将服务器的当前时间写入到 HTML中的Text中,要求不提交表单

<input id="Text1" type="text" />
<input id="Submit1" type="button" value="当前时间" onclick="btnGetdate()" />

2.写入AJAX的框架,在后台请求数据

<script type="text/javascript">
function btnGetdate() {
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //创建XMLHTTP对象,相当于WebClient
if (!xmlhttp) {
alert("创建xmlhttp对象异常!");
return false;
}
xmlhttp.open("Get", "GetDate.ashx", false); //如果是GET请求,可能会出现缓存,flase 为同步,true 为异步 //准备向服务器的GetDate.ashx发出Get请求
//XMLHTTP默认(推荐)不是同步请求的,也就是open方法并不像WebClinent的DownloadString
//那样把服务器返回的数据拿到才返回,是异步的,因此需要监听onreadystatechange事件(准备状态事件) xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) { //服务器返回了
if (xmlhttp.status == 200) { //如果状态码为200则是成功
document.getElementById("Text1").value = xmlhttp.responseText;
//responseText属性为服务器返回的文本
}
else {alert("AJAX无法请求!");}
}
}
xmlhttp.send(); //这时才开始发送请求
}
</script>

缓存的处理
只有GET请求才会有缓存,是由于它会判断请求的内容是否一样,如果一样则返回缓存
如果是POST请求就不会有缓存,处理原理:给它提交的内容里面,每次都不一样,如加入当前时间
如下 :

 xmlhttp.open("Get", "GetDate.ashx?date="+new Date(), false);  //date普通参数 new 当前时间

中文的处理
如果在请求中含有中文的话,可能会出现乱码,解决办法:利用encodeURI()进行转换
如下是没有做处理的:

xmlhttp.open("Get", "GetDate.ashx?&text=中国", false);

如下是处理过的:

xmlhttp.open("post", "GetDate.ashx?id="+encodeURI('中国'), false); 

案例2:

用AJAX实现汇率转换,页面放一个文本框 (输入人民币)、一个下拉列表 (美元,日元, 币)、一个按钮,点击按钮在一个span中
显示转换后的金额。汇率计算在服务器端完成,假设汇率 (人民币/外币 ):7、0.1、0.9

1.HTMl页面设计,一个文本,一个下拉列表,一个按钮,一个文本

<input id="count" type="text" />
<select id="SelectType" name="D1">
<option value="1">美元</option>
<option value="2">日元</option>
<option value="3">港币</option>
</select>
<input id="Button1" type="button" value="转换" onclick="zhuanghuan()"/> //指定单击事件
<input id="requst" type="text" />

2.Javascript的编写(单击事件)AJAX的框架

function zhuanghuan() {
var amount = document.getElementById("count").value;
var type = document.getElementById("SelectType").value;
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); if (!xmlhttp) {
alert("创建xmlhttp对象异常!");
}
xmlhttp.open("Post", "huilv.ashx?amount=" + amount + "&type=" + type);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
document.getElementById("requst").value = xmlhttp.responseText;
}
}
}
xmlhttp.send();
}

3.后台处理程序的编写 huilv.ashx

 public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
int amount =Convert.ToInt32(context.Request["amount"]);
int type =Convert.ToInt32(context.Request["type"]);
if (type == ) //美元
{
context.Response.Write(amount / );
}
else if(type == )//日元
{
context.Response.Write(amount * );
}
else if (type == )//港币
{
context.Response.Write(amount * / );
}
}

AJAX 简单上手的更多相关文章

  1. ajax简单后台交互

    ajax简单后台交互 1,扯淡 单身的生活,大部分时间享受自由,小部分时间忍受寂寞. 生活有时候,其实蛮苦涩,让人难以下咽.那些用岁月积累起来的苦闷,无处宣泄,在自己的脑海里蔓延成一片片荆棘,让你每每 ...

  2. Spring Boot项目简单上手+swagger配置+项目发布(可能是史上最详细的)

    Spring Boot项目简单上手+swagger配置 1.项目实践 项目结构图 项目整体分为四部分:1.source code 2.sql-mapper 3.application.properti ...

  3. ajax简单手写了一个猜拳游戏

    使用ajax简单写一个猜拳游戏 HTML代码 <!DOCTYPE HTML> <html lang="en-US"> <head> <me ...

  4. javascript AJAX简单原理及什么是ajax

    AJAX简单原理供初学者理解 AJAX的原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其 ...

  5. Tinker 热修复框架 简单上手教程

    当你们看到Tinker的时候是不是有点愣逼这个是什么东西? 简单来说就是不需要重新下载app和重新安装app 来进行更新app的技术框架. 看看这个吧,我也是才学习 ,先做个学习记录 参考:Tinke ...

  6. Jquery Ajax简单封装(集中错误、请求loading处理)

    Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...

  7. 前端(十七)—— jQuery基础:jQuery的基本使用、JQ功能概括、JS对象与JQ对象转换、Ajax简单应用、轮播图

    jQuery的基本使用.JQ功能概括.JS对象与JQ对象转换.Ajax简单应用.轮播图 一.认识jQuery 1.什么是jQuery jQuery是对原生JavaScript二次封装的工具函数集合 j ...

  8. ajax简单封装

    var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); ...

  9. ajax简单后台交互-我们到底能走多远系列(28)

    我们到底能走多远系列(28) 1,扯淡 单身的生活,大部分时间享受自由,小部分时间忍受寂寞. 生活有时候,其实蛮苦涩,让人难以下咽.那些用岁月积累起来的苦闷,无处宣泄,在自己的脑海里蔓延成一片片荆棘, ...

随机推荐

  1. VPN两点注意事项

    今天折腾了半天vpn,特记录以下两点注意事项: 1.客户端VPN连接,点右键属性=>网络选项卡=>双击Internet 协议版本 4 IPV4=>高级=>远程网络上使用默认网关 ...

  2. mysql group by 用法解析(详细)

    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...

  3. 解决libpython2.6.so.1.0: cannot open shared object file

    文章解决的问题:安装nginx中需要Python2.6的支持,下面介绍如何安装Python2.6,并建立lib的连接. 问题展示:error while loading shared librarie ...

  4. Ⅹ.spring的点点滴滴--IObjectPostProcessor(对象后处理器)

    承接上文 IObjectPostProcessor(对象后处理器) 前提是实现接口的对象注册给当前容器 C#: 通过继承AbstractObjectFactory对象的AddObjectPostPro ...

  5. 【三支火把】---一份程序看懂C程序printf()的几种常用用法

    闲来继续巩固我的学习之路,今天略微整理了一下,C程序中Printf()的一些常用用法,虽然自己以前好像会,但是不够系统,今天大致整理了一些,先贴上来看看,以后在看到其他,继续补充,希望能帮到一些像我一 ...

  6. sigar监控

    相关参照博客: http://liningjustsoso.iteye.com/blog/1254584 http://blog.csdn.net/aoxida/article/category/12 ...

  7. Java的递归算法

    递归算法设计的基本思想是:对于一个复杂的问题,把原问题分解为若干个相对简单类同的子问题,继续下去直到子问题简单到可以直接求解,也就是说到了递推的出口,这样原问题就有递推得解. 关键要抓住的是: (1) ...

  8. apache配置directoryindex

    为了让程序自动执行目录下的某个文件,可以配置虚拟主机中的directoryindex 如: <VirtualHost *:80>    DocumentRoot "D:/var/ ...

  9. 在cocos2d-x中使用位图字体

    http://blog.csdn.net/fansongy/article/details/9006677 通常情况下,游戏中绚丽的文字和数字都不是字体生成的而是"贴"上去!今天, ...

  10. gdb调试程序

    一.准备好内容vim test3.c  输入如下即可 #include <stdio.h> int func(int n) {         int sum=0,i;         f ...