随便在百度谷歌上输入Ajax都会出现一大堆的搜索结果,这已经不再是什么新奇的技术了。但若从一开始就学习了ASP.Net,使用功能齐全的Visual Studio集成开发工具,或许未必能对访问一个动态网页到底发生了哪些事情了解的那么清楚。VS上提供的WebForm编程方式,让你可以像做WinForm开发一样,拖拖控件,双击写点C#代码,效果差不多就出来了,功能也实现的差不多了。

翻看所有和Ajax有关的博客或书本,都会告诉你,这不是一个新词,而是几种现有技术的缩写:Asynchronous、JavaScript and XML。它能够实现后台与服务器少量数据交换,实现页面的异步刷新。举个简单的例子,也是被常拿出来练手的,省市区联动。假设你在网上买东西,要你填写你家地址。那么这个网站得提供全国30多个省(含直辖市)及这些省下的地级市,再往下就是这些地级市下的区和县。如果没有Ajax,在你首次进入页面时,这几千条数据都得从后台取来,给你摆在这里。但如果使用Ajax呢,当你选择了北京市,那么就去后台将北京市下的各个区和县取出来,更新前台页面放区(县)的区域。这样每次获取的数据量就大大减少了。(这个例子在后面我会给出完整实现代码)

先要搞清访问网站时发生了哪些事情。你在浏览器上输入网址,DNS服务器会将网址解析成IP地址,路由器寻找到主机后,去80端口(默认HTTP的端口,有些可能会指定一个非80的端口给自己的网站)要客户端请求(Request)的页面;服务器处理好客户端的请求(Request)后,将文档返回给客户端(Response),客户端的浏览器将收到的文档(Html)解析显示出来。那么怎么实现Ajax的这样一个过程呢。关键的几个步骤是:创建XmlHttpRequest对象,设置对象调用方法,调用回调函数显示服务器返回的数据,发送请求。在这个过程中,JavaScript起重要作用。因为它是脚本语言,由浏览器解析执行,并不会导致页面的刷新。下面我们在VS上新建一个Web工程来举例说明实现一个简单的Ajax。

步骤一

新建Html页面,用于请求数据,并将返回的数据显示在该页面上。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Simple Ajax Demo</title>
<script type="text/javascript" language="javascript" src="JS/SimpleAjax.js"></script>
</head>
<body>
<input type="button" id="GetInfoByAjax" value="Ajax获取数据" onclick="GetInfoByAjax();"/>
<hr/>
<div id="DataDiv"></div>
</body>
</html>

步骤二

新建JS文件,放在JS目录下,命名为SimpleAjax.js。在上面建好的Html页面中记得要引用该文件。

function GetInfoByAjax() {
//创建xmlHttpRequest对象
var xmlHttp = new XMLHttpRequest(); //配置XmlHttpRequest对象
xmlHttp.open("get", "Handlers/SimpleAjax.ashx");
//设置回调函数
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState = 4 && xmlHttp.status == 200) {
document.getElementById("DataDiv").innerHTML = xmlHttp.responseText;
}
}
//发送请求
xmlHttp.send(null);
}

步骤三

建立一个一般处理程序(.ashx)文件,当然,你也可以用一个aspx文件来作为后台处理前台页面发来的请求。该文件命名为SimpleAjax.ashx,放在Handlers目录下。为了体现最简单,这个文件我们不做任何修改,默认的文件会向前台返回一个字符串“Hello World”。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace ProvinceCityAjax.Hadlers
{
/// <summary>
/// SimpleAjax 的摘要说明
/// </summary>
public class SimpleAjax : IHttpHandler
{ public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
} public bool IsReusable
{
get
{
return false;
}
}
}
}

好了,这会儿你在浏览器上查看文件,点击页面上的按钮,就可以看到Hello World被写在页面上了。同时观察浏览器的后退按钮,是否依旧灰色无法点击呢?说明页面未被刷新,但向后台请求的数据确实返回来了。

到这里,这个最简单的Ajax实现了。但问题还有很多,那一个简简单单的JavaScript函数就有许多问题。XMLHttpRequest是什么,为什么用get,那个if条件中的4,200都是什么。待续!

版权声明:本文为博主原创文章,未经博主允许不得转载。

Ajax基础知识(一)的更多相关文章

  1. Ajax基础知识《一》

    对于网站开发人员,一定不会陌生的Ajax技术,本篇就让我们认识一下它,或许在日后的开发过程中我们就可以使用到.Ajax在那方面使用的比较多呢?答案:表单注册,传统的表单注册,有时需要填写大量的信息,当 ...

  2. Ajax基础知识(二)

    接上一篇  Ajax基础知识(一) 在上一篇博客里,抛弃了VS中新建aspx页面,拖个button写上C#代码的方式.使用ajax的方式,异步向服务器请求数据.我们让服务器只简单的返回一个" ...

  3. Ajax基础知识 浅析(含php基础语法知识)

    1.php基础语法    后缀名为.php的文件 (1) echo   向页面中输入字符串  <?php    所有php相关代码都要写在<?php ?>这个标签之中 echo &q ...

  4. 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

  5. ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

  6. 14.ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

  7. AJAX 基础知识

    1.AJAX 是一种用于创建快速动态网页的技术.而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不 ...

  8. Json,Gson,Ajax基础知识

    //json 是一种轻量级的文本格式,解析简单,他也是一键值来存,数据与数据的分割是以,来分割 //{} 看到大括号就是一个对象,[]代表集合 ,基本上所有数据的交互都是以json格式来进行传递的 / ...

  9. ajax基础知识

    一个简单的ajax例子: Uncaught SyntaxError: Unexpected token input看看是否是漏了:或者函数没有() //更新单个简历完整度 function updat ...

随机推荐

  1. Visual Studio Code中配置GO开发环境

    在Visual Studio Code中配置GO开发环境 一.GO语言安装 详情查看:GO语言下载.安装.配置 二.GoLang插件介绍 对于Visual Studio Code开发工具,有一款优秀的 ...

  2. NSUserDefaults写作和阅读对象定义自己

    需要编写对象必须实现NSCoding protocol Person Class Person.h #import <Foundation/Foundation.h> #import &q ...

  3. Dreamer 3.0 支持json、xml、文件上传

    自己写的框架,功能类似Struts2.x 下载地址:http://pan.baidu.com/share/link?shareid=3273223286&uk=470382596 新增功能: ...

  4. WPF MediaElement播放器2

    在此问个问题,MediaElement播放本地和http上的视频没问题,但是ftp的怎么在本例中播放不了 若高手了解,请不吝赐教 using System; using System.Collecti ...

  5. android升级软件版本号,您安装后的新版本号,成功安装画面没有出现,或直接回到桌面

    Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //an ...

  6. w7关闭休眠增加C盘容量

    http://jingyan.baidu.com/article/f3ad7d0fc0992e09c2345b51.html powercfg -h off,即可关闭休眠功能 powercfg -h ...

  7. Ubuntu下用NdisWrapper安装网卡驱动

    下面是一个简单全面的使用NdisWrapper的指南.这是从Beginning Ubuntu Linux, Second Edition中提炼出来的. 这份指南是第8章的一部分.该章给出了在Ubunt ...

  8. java中处理字符编码(网页与数据库)(转)

    首先声明一下,此文章时从网上转载的.如下的某些方法是确实管用,但是从中发现了有一点不足,就是原文笔者没考虑使用不同Web Server时出现的情况,比如文章里我用红色字体画出来的部分代码在Tomcat ...

  9. 解决 - java.lang.OutOfMemoryError: unable to create new native thread

    工作中碰到过这个问题好几次了,觉得有必要总结一下,所以有了这篇文章,这篇文章分为三个部分:认识问题.分析问题.解决问题. 一.认识问题: 首先我们通过下面这个 测试程序 来认识这个问题: 运行的环境  ...

  10. 从最大似然到EM算法浅解

    从最大似然到EM算法浅解 zouxy09@qq.com http://blog.csdn.net/zouxy09 机器学习十大算法之中的一个:EM算法.能评得上十大之中的一个,让人听起来认为挺NB的. ...