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 ...
随机推荐
- java Socket使用详细解释
客户/server通信模式, client需要主动创造和server Socket(套接字), server端收到了client的连接请求, 也会创建与客户连接的 Socket. Socket可看做是 ...
- svn 使用(一个)
一个. 安装svn server(操作系统centos) yum install subversion 通过 subversion -v 如果成功安装命令来查看 温馨提示不承担任何subversio ...
- Java乔晓松-android的四大组件之一Service(服务的绑定)
android的四大组件之一Service(服务的绑定) 怎么绑定服务,又怎么解除服务,代码如下: MainActivity.java源码: package com.example.lesson14_ ...
- How to fix Column 'InvariantName' is constrained to be unique 解决办法!
Introduction When you build a web project that uses Enterprise Library Community for the Application ...
- android studio 怎样正确导入jar
近期又開始做android,使用android studio中遇到导入jar没有反应的问题,查了下资料实践攻克了,现特地写一下博客.希望对刚刚的使用的android studio的朋友有帮助. 1.先 ...
- 【BZOJ 1642】 [Usaco2007 Nov]Milking Time 挤奶时间
1642: [Usaco2007 Nov]Milking Time 挤奶时间 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 590 Solved: 3 ...
- 希尔排序----java实现
思路:希尔排序是分组基础上的直接插入排序,给定的一个步长数组,每个小组先直接插入排序.虽然有四次循环,但是每次循环次数少. package com.sheepmu.text; import java. ...
- Windows Phone 的控件倾斜效果
原文:Windows Phone 的控件倾斜效果 Windows Phone 7的系统设置里,按钮都有一个点击倾斜的效果,但自己添加的控件就没有.但微软提供了这个效果的代码:TiltEffect MS ...
- Win10打不开chm文件的解决办法
在Win10系统中打开chm文件时,提示安全警告,如下图: 点击打开后,可以看到chm文件的目录大纲,但是点击任意目录其内容都是空白,如下图: 经过网络一通搜索,发现解决办法很简单,就是在上面的安装警 ...
- webstorm创建nodejs + express + jade 的web 项目
webstorm创建nodejs + express + jade 的web 项目 前简单了解过nodejs,觉得用nodejs来做个网站也太麻烦了,要自己拼html的字符串返回,这能做网站嘛? 最近 ...