【javascript】Ajax核心-XMLhttpRequest
2015-08-23 20:49
781 查看
Ajax为我们提供了一种无需刷新页面就可以动态加载数据的方式,而XMLHttpRequest对象是整个Ajax的核心,缺少了它,Ajax的其余技术就无法形成一个整体。Ajax赖以生存的核心就是异步发送请求。异步发送请求是根本,不刷新页面动态加载是表面的现象。Ajax技术离开了XMLHttpRequest对象,将失去与服务器异步通信的能力。
使用XMLhttpRequest发送请求的一般步骤
(1)初始化XMLHttpRequest对象
(2)使用Open方法打开与服务器的连接。打开连接时指定发送请求的方法,采用Get或Post。指定是否采用异步方式。
(3)设置监听函数,其作用就是用于检测XMLhttpRequest状态的函数,当XMLHttpRequest的状态发生改变时,该回调函数将被触发而自动执行,而监听函数的作用就是当服务器成功响应时,去获得响应后的数据,并加载到页面中去
(4)调用Send发送请求。
XMLHttpRequest的一些方法和属性
解析服务器响应
服务器响应生成简单的文本,而XMLHttpRequest包含一个属性responseText,该属性可获取服务器响应生成的文本。在解析服务器响应之前,必须先判断服务器响应是否完成,以及响应是否正确。。为了判断服务器响应是否正确。XMLhttpRequest同样提供了两个属性:
ReadyState:判断服务器的响应状态(4表示响应完成),staus判断服务器响应的对应的状态码(200表示响应正常)
示例
html页面
Jacascript
一般处理程序
对示例的说明
首先我们在html页面中设置了一个按钮,以此来触发JS中的事件,
在JS中做了两件事情,第一件就是向服务程序发送请求,第二件事就是接受服务程序的响应,并把它加载到页面中。其中接受响应是通过设置监听事件来实现的,每当XMLHttpRequest的处理状态发生改变时就会触发一次监听事件,当服务器响应结束且响应正常时就会触发这个事件。
一般处理程序;这是服务器处理程序,JS调用的就是这个程序去处理我们请求.
总结
从执行过程中我们可以看到XMLHttpRequest为我们做的事情就是帮我们去发送请求,同时帮我们接受服务器的响应也就是说XMLHttpRequest是位于在客户端和服务器之间的。我们的所有请求的发送和响应的接受都由XMLHttpRequest帮我们托管。这就是以XMLhttprequest为核心的Ajax在为我们做的事情。
使用XMLhttpRequest发送请求的一般步骤
(1)初始化XMLHttpRequest对象
(2)使用Open方法打开与服务器的连接。打开连接时指定发送请求的方法,采用Get或Post。指定是否采用异步方式。
(3)设置监听函数,其作用就是用于检测XMLhttpRequest状态的函数,当XMLHttpRequest的状态发生改变时,该回调函数将被触发而自动执行,而监听函数的作用就是当服务器成功响应时,去获得响应后的数据,并加载到页面中去
(4)调用Send发送请求。
XMLHttpRequest的一些方法和属性
解析服务器响应
服务器响应生成简单的文本,而XMLHttpRequest包含一个属性responseText,该属性可获取服务器响应生成的文本。在解析服务器响应之前,必须先判断服务器响应是否完成,以及响应是否正确。。为了判断服务器响应是否正确。XMLhttpRequest同样提供了两个属性:
ReadyState:判断服务器的响应状态(4表示响应完成),staus判断服务器响应的对应的状态码(200表示响应正常)
示例
html页面
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script src="JS.js" type ="text/javascript"></script> <title></title> </head> <body> <label for="txt_username"> 姓名:</label> <input type="text" id="txt_username" /> <br /> <label for="txt_age"> 年龄:</label> <input type="text" id="txt_age" /> <br /> <!--当点击GET按钮时,调用JavaScript脚本(JS.js),执行btn_click事件--> <input type="button" value="GET" id="btn" onclick="btn_click();" /> <div id="result"> </div> </body> </html>
Jacascript
function btn_click() { //1 初始化XMLhttpRequest createXMLHttpRequest(); //得到username值 var username = document.getElementById("txt_username").value; xmlrequest.open("get", "Handler1.ashx?username=" + username);//打开与服务器链接的地址 //2 设置监听事件,当状态改变时执行该函数 xmlrequest.onreadystatechange = function () {//----------------------------------------------3 获得响应,并更新页面 if (xmlrequest.readyState == 4 && xmlrequest.status == 200) { document.getElementById("result").innerHTML = xmlrequest.responseText; } } //3 发送请求---------------------------------------------------------------------------------1 发送请求 xmlrequest.send(null); } //实例化XMLHttpRequest,兼容浏览器 function createXMLHttpRequest() { if (window.XMLHttpRequest) { //DOM2浏览器 xmlrequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { //IE浏览器 try{xmlrequest=new ActiveXObject("Msxml2.XMLHTTP");} catch (e) { try{xml=new ActiveXObject("Microsoft.XMLHTTP");} catch (e) { }} } }
一般处理程序
using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace AjaxDemo { /// <summary> /// Handler1 的摘要说明 /// </summary> public class Handler1 : IHttpHandler { public void ProcessRequest(HttpContext context)//---------------------------------------------2 处理请求 { String username=context.Request.QueryString["username"]; context.Response.ContentType = "text/plain";//设置输出流的HTTP MIME类型 context.Response.Write("你好,"+username);//将一个字符串写入HTTP响应输出流---------------发送响应 } public bool IsReusable { get { return false; } } } }
对示例的说明
首先我们在html页面中设置了一个按钮,以此来触发JS中的事件,
在JS中做了两件事情,第一件就是向服务程序发送请求,第二件事就是接受服务程序的响应,并把它加载到页面中。其中接受响应是通过设置监听事件来实现的,每当XMLHttpRequest的处理状态发生改变时就会触发一次监听事件,当服务器响应结束且响应正常时就会触发这个事件。
一般处理程序;这是服务器处理程序,JS调用的就是这个程序去处理我们请求.
总结
从执行过程中我们可以看到XMLHttpRequest为我们做的事情就是帮我们去发送请求,同时帮我们接受服务器的响应也就是说XMLHttpRequest是位于在客户端和服务器之间的。我们的所有请求的发送和响应的接受都由XMLHttpRequest帮我们托管。这就是以XMLhttprequest为核心的Ajax在为我们做的事情。
相关文章推荐
- 与TCP/IP协议的初次见面(一)
- 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理
- Acunetix Web Vulnerability ScannerV10.0
- linux网络命令
- HTTP请求中如何选择Get和Post方式
- 本地服务器网络连接配置
- HttpGet/HttpPost/HttpClient介绍
- HttpServletRequestWrapper,HttpServletResponseWrapper在过滤器Filter中的使用
- TCP/IP-TCP
- POJ 3281 [网络流dinic算法模板]
- http:关于长连接和分块传输
- TCP协议增强器的应用实践
- 深度学习-神经网络1
- 黑马程序员-----网络编程1
- JAVA网络编程叶存菜鸟TCP程序设计笔记echo程序经典案列
- 黑马程序员----HTTP 方法:GET 对比 POST
- 网络地址转换
- charles工具使用-抓取https请求
- TCP和UDP通信之间比较
- 5中服务器网络编程模型讲解