Ajax基础知识(一)
随便在百度谷歌上输入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基础知识(一)的更多相关文章
- Ajax基础知识《一》
对于网站开发人员,一定不会陌生的Ajax技术,本篇就让我们认识一下它,或许在日后的开发过程中我们就可以使用到.Ajax在那方面使用的比较多呢?答案:表单注册,传统的表单注册,有时需要填写大量的信息,当 ...
- Ajax基础知识(二)
接上一篇 Ajax基础知识(一) 在上一篇博客里,抛弃了VS中新建aspx页面,拖个button写上C#代码的方式.使用ajax的方式,异步向服务器请求数据.我们让服务器只简单的返回一个" ...
- Ajax基础知识 浅析(含php基础语法知识)
1.php基础语法 后缀名为.php的文件 (1) echo 向页面中输入字符串 <?php 所有php相关代码都要写在<?php ?>这个标签之中 echo &q ...
- 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- 14.ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
- AJAX 基础知识
1.AJAX 是一种用于创建快速动态网页的技术.而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不 ...
- Json,Gson,Ajax基础知识
//json 是一种轻量级的文本格式,解析简单,他也是一键值来存,数据与数据的分割是以,来分割 //{} 看到大括号就是一个对象,[]代表集合 ,基本上所有数据的交互都是以json格式来进行传递的 / ...
- ajax基础知识
一个简单的ajax例子: Uncaught SyntaxError: Unexpected token input看看是否是漏了:或者函数没有() //更新单个简历完整度 function updat ...
随机推荐
- Kinect的学习笔记发展(一)Kinect引进和应用
Kinect的学习笔记发展(一)Kinect引进和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
- 推荐15个月 Node.js 开发工具
Node.js 越来月流行.这个基于 Google V8 引擎建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.在本文中.我们列出了2015年最佳的15个 Node.js 开发工具.这些工具 ...
- BI事实上的和维表定义
一个典型的例子是,逻辑业务相比立方体,产品尺寸.时间维度.位置尺寸,分别作为不同的轴.轴的交点是一个详细的事实.这一事实表是多维度的交叉点的一个表.维表是事实的分析的一种形式. 首先介绍下数据库结构中 ...
- Mono+CentOS+Jexus
在.NET Core之前,实现.Net跨平台之Mono+CentOS+Jexus初体验准备工作 本篇文章采用Mono+CentOS+Jexus的方式实现部署.Net的Web应用程序(实战,上线项目). ...
- 学派Delphi方法(推荐)——————————【Badboy】
Delphi是一个新的可视化编程环境, 提供了一种方便.快捷的Windows使用顺序开发工具. 它使用了MicrosoftWindows图形用户界面的很多先进特性和设计思想. 本文就给读者引见学Del ...
- Git使用总结-so easy
一.Git的特性 Speed 速度(git是用c语言写的.一般都是提交到本地) Simple design Strong support for non-linear development (tho ...
- HTML5 Storage API
原文:HTML5 Storage API Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多. 在 ...
- onsubmit事件
var oForm = document.getElementById("form1"); oForm.onsubmit = function(){ alert("你 ...
- 安装nodejs搭建ghost个人博客
记录一下今天在linux下折腾nodejs的过程,相互学习: (不知道为什么用源代码安装,调用npm的时候老是会出现找不到npmlog的 错误,后来换用下了个二进制 来搞,假设那个牛牛知道为什么.希望 ...
- 左右Map
Person p=new Person("黄雄"); Map map=new HashMap(); map.put("p", p); p.setName(&qu ...