昨天我们用JQuery.Ajax解释JQuery样通过Ajax实现异步通信。为了更好的编织知识网,今天我们用一个Demo演示怎样用javascript实现原生Ajax的异步通信。

原生Ajax实现异步通信分为下面5步:

1.创建XMLHttpRequest对象。

2.注冊回调方法。

3.设置和server端交互的參数

4.设置向server端发送的数据,启动和server端的交互;

5.写回调方法

有了这5步的思想指导。以下我们開始设计实现过程。

首先我们新建一个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></title><script type="text/javascript">function submit() {//1.创建XMLHttpRequest对象var xmlhttp;if (window.XMLHttpRequest) {//IE7,IE8,FireFox,Mozillar,Safari,Operaxmlhttp = new XMLHttpRequest();if (xmlhttp.overrideMineType) {xmlhttp.overrideMineType("text/xml");}} else if (window.ActiveXObject) {//IE6,IE5var activexName = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP','Micro  soft.XMLHTTP'];for (var i = 0; i < activexName.length; i++) {try {xmlhttp = new ActiveXObject(activexName[i]);break;} catch (e) {}}}if (xmlhttp == undefined || xmlhttp == null) {alert("当前浏览器不支持创建XMLHttpRequest对象,请更换浏览器");return;}//2.注冊回调方法xmlhttp.onreadystatechange = callback;//获得文本框输入的内容var userName = document.getElementById("UserName").value;//3.设置和server端交互的參数xmlhttp.open("GET", "Ajax.aspx?

name=" + userName, true); //Get方式 //xmlhttp.open('POST', 'Ajax.aspx', true); //Post方式 //4.设置向server端发送的数据,启动和server端的交互 xmlhttp.send(null); //Get提交 //xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //Post提交 //xmlhttp.send('name='+userName); //5.写回调方法 function callback() { //推断和server的交互是否完毕。server是否正确返回了数据 //表示和server端的交互已经完毕 if (xmlhttp.readyState == 4) { //表示正确的返回了数据 if (xmlhttp.status == 200) { //纯文版数据的接收方法 var message = xmlhttp.responseText; //把返回的数据动态加入到div中 var div = document.getElementById("message"); div.innerHTML = message; } } } } </script> </head> <body> <input type="text" id="UserName"> <input type="button" οnclick="submit()" value="校验username" /> <br /> <div id="message"> </body> </html>

在实现的第三、四步,设置和server的提交方式分为Get方式和Post方式。Get方式向server提交时,參数会显示在链接网址中,存储量小。安全性低。Post方式将信息打包后进行提交。存储量大,安全性高。所以,一般我们採用Post方式进行提交。

接着,Ajax.aspx作为server,处理html提交的请求,代码例如以下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;namespace Demo
{public partial class Ajax : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){string userName = Request["name"].ToString().Trim();if (userName == null || userName.Length == 0){Response.Write("username不能为空");}else{if (userName.Equals("quwenzhe")){Response.Write("username[" + userName + "]已经存在");}else{Response.Write("能够使用username[" + userName + "]注冊");}}}}
}

Demo演示效果图例如以下:

           

通过上图我们能够发现,整个交互过程更新的仅仅是Web页面事先标记的div,其它内容并没有刷新。在传统的Web请求中,提交的是表单,返回的结果显示在跳转页面。

而使用Ajax的Web页面,提交的是数据。返回结果显示在当前页面,实现页面局部刷新。所以,Ajax的出现,降低了交互所需的网络流量,添加了用户的体验度。

这个Demo是用javascript实现的原生Ajax交互,能帮助我们进一步了解不够Ajax异步通信,我希望我的解释可以帮助你进步。

版权声明:本文博主原创文章。博客,未经同意不得转载。

本机Ajax异步通信相关推荐

  1. struts2,实现Ajax异步通信

    用例需要依赖的jar: struts2-core.jar struts2-convention-plugin.jar,非必须 org.codehaus.jackson.jar,提供json支持 用例代 ...

  2. Jquery实现AJAX异步通信

    目录 Ajax的简介 Ajax的特点 Ajax向后端发送请求 发送请求后端数据回显 Ajax的简介 Ajax(Asynchronous JavaScript and XML),直译为"异步的 ...

  3. Microsoft Asp.Net Ajax框架入门(12) 了解异步通信层

    VS 2008 本文通过两个简单的例子,了解Asp.Net Ajax Asynchronous Communication Layer Asp.Net Ajax异步通信层提供了一系列客户端的类,用于客 ...

  4. 原生javaScript中使用Ajax实现异步通信

    AJAX本质就是在HTTP协议的基础上以异步的方式与服务器进行通信,所谓异步,就是指某段程序执行时不会阻塞其它程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序,相反则为同步. 以下开始简单 ...

  5. Axios实现异步通信

    Axios异步通信(通信框架) <!--导入axios--> <script src="https://cdn.bootcdn.net/ajax/libs/axios/0. ...

  6. Ajax 技术资源中心

    Ajax 技术资源中心 Ajax(Asynchronous JavaScript and XML)是一种编程技术,它允许结合 XML 和 JavaScript 用于 Web 应用程序,从而打破页面刷新 ...

  7. 前端进阶_狂神Vue笔记_语法指令v-bind、v-on、v-for_表单双绑_组件_Axios异步通信_Vue的生命周期_计算属性_插槽 <slot>_webpack使用_vue-router路由

    四.第一个Vue程序 4.1.什么是MVVM MVVM(Model-View-ViewModel)是一种软件设计模式,由微软WPF(用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Si ...

  8. 《ASP.NET AJAX程序设计——第II卷:客户端Microsoft AJAX Library相关》前言

    章节列表:http://www.cnblogs.com/dflying/archive/2007/05/18/751741.html 在最近的一年以及今后的三五年内,我们有理由相信Web应用程序将受到 ...

  9. AJAX(看这一篇就够了,详细)

    看这一篇就够了!-Ajax概念详解 AJAX简介: AJAX即Asynchronous JavaScript and XML(异步JavaScript和XML技术),是一种在无须重新加载整个网页的情况 ...

最新文章

  1. 奥特linux系统监控,奥特曼知识大挑战答案
  2. Python学习之==json处理
  3. 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★
  4. Vue+Openlayer使用Draw实现交互式绘制线段
  5. go 项目 cmd目录_Golang 项目布局浅析
  6. Distributed transactions with multiple databases, Spring Boot, Spring Data JPA and Atomikos
  7. SQL Server 2005/2008 导入导出数据常见报错
  8. MongoDB 教程 | 菜鸟教程
  9. ubuntu 刚更改默认python3版本后更新包等
  10. 2020.12.23 随笔纪念粉笔数【2020】
  11. tt按键精灵从入门到精通完整版
  12. 信息系统项目管理师考试论文写作复习笔记(4)-范围管理论文2
  13. python手机价格预测论文_基于Python的微博发表意向预测研究
  14. 淡墨写韵,不守起承转合
  15. Java+coolq实现QQ机器人
  16. 第31讲:永久存储:腌制一缸美味的泡菜
  17. 关于ElasticSearch (ES)
  18. Java并发工具类(三)Exchanger
  19. 网络能看到计算机 但是进不去,共享文件夹 在网络邻居看到别人的电脑 进不去...
  20. hp服务器性能测试,较新架构服务器用CPU性能对比测试

热门文章

  1. PhpStorm配置SVN的完整方法
  2. python随机验证码函数
  3. Linux安装ImageMagick与JMagick完成过程及配置
  4. 快速找到由程序员到CTO发展道路上的问路石
  5. PHP基础3_数组,循环及函数
  6. [导入]Netron研究(二)----容器登场
  7. C#类的属性遍历及属性值获取
  8. c# controls.add 控件的使用 ,间接引用还是值引用
  9. Winsock网络编程快速入门
  10. IOS14.3开发之使用纯代码创建UIButton以及弹框的使用