Ajax之XMLHttpRequest
XMLHttpRequest对象 XMLHttpRequest 提供客户端同http服务器通讯的协议 一:创建 IE : http_request = new ActiveXObject("Msxml2.XMLHTTP"); http_request = new ActiveXObject("Microsoft.XMLHTTP"); 非IE: http_request = new XMLHttpRequest();
二:onreadystatechange 指定当readyState属性改变时的事件处理句柄 语法 http_request .onreadystatechange = funcMyHandler;
三:readyState 返回XMLHTTP请求的当前状态 变量,此属性只读,状态用长度为4的整型表示.定义如下:
0 (未初始化) 对象已建立,但是尚未初始化(尚未调用open方法)
1 (初始化) 对象已建立,尚未调用send方法
2 (发送数据) send方法已调用,但是当前的状态及http头未知
3 (数据传送中) 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误,
4 (完成) 数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据
四:responseBody 返回某一格式的服务器响应数据
五:responseStream 以Ado Stream对象的形式返回响应信
六:responseText 将响应信息作为字符串返回 备注
变量,此属性只读,将响应信息作为字符串返回。 XMLHTTP尝试将响应信息解码为Unicode字符串,XMLHTTP默认将响应数据的编码定为UTF-8,如果服务器返回的数据带BOM(byte -order mark),XMLHTTP可以解码任何UCS-2 (big or little endian)或者UCS-4 数据。注意,如果服务器返回的是xml文档,此属性并不处理xml文档中的编码声明。你需要使用responseXML来处理。
七:responseXML 将响应信息格式化为Xml Document对象并返回 备注
变量,此属性只读,将响应信息格式化为Xml Document对象并返回。如果响应数据不是有效的XML文档,此属性本身不返回XMLDOMParseError,可以通过处理过的DOMDocument对象获取错误信息。
八:status 返回当前请求的http状态码 长整形标准http状态码,定义如下: Number Description 100 Continue 101 Switching protocols 200 OK 201 Created 202 Accepted 203 Non-Authoritative Information 204 No Content 205 Reset Content 206 Partial Content 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 305 Use Proxy 307 Temporary Redirect 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Request Entity Too Large 414 Request-URI Too Long 415 Unsupported Media Type 416 Requested Range Not Suitable 417 Expectation Failed 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout 505 HTTP Version Not Supported 备注 长整形,此属性只读,返回当前请求的http状态码,此属性仅当数据发送并接收完毕后才可获取。
九:xmlhttprequest:statusText成员 statusText 返回当前请求的响应行状态
十:abort()方法 取消当前请求
十一:getallresponseheaders()方法 获取响应的所有http头 备注
每个http头名称和值用冒号分割,并以\r\n结束。当send方法完成后才可调用该方法。
十二:getResponseHeader 从响应信息中获取指定的http头 例: xmlhttp.getResponseHeader("Server"); 输出http头中的server列:当前web服务器的版本及名称。 备注
当send方法成功后才可调用该方法。如果服务器返回的文档类型为"text/xml", 则这句话xmlhttp.getResponseHeader("Content-Type");将返回字符串"text/xml"。可以使用 getAllResponseHeaders方法获取完整的http头信息。
十三:open()方法 创建一个新的http请求,并指定此请求的方法、URL以及验证信息 语法
XMLHttpRequest.open(strMethod, strUrl, blnAsync, strUser, strPassword);
参数 strMethod http方法,例如:POST、GET、PUT及PROPFIND。大小写不敏感。 strUrl 请求的URL地址,可以为绝对地址也可以为相对地址。 blnAsync[可选] 布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。 async是一个布尔值。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作。我们需要根据实际需要来指定同步方式,在某些页面中,可能会发出多个请求,甚至是有组织有计划有队形大规模的高强度的request,而后一个是会覆盖前一个的,这个时候当然要指定同步方式:Flase。 strUser[可选] 如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。 strPassword[可选] 验证信息中的密码部分,如果用户名为空,则此值将被忽略。 备注 调用此方法后,可以调用send方法向服务器发送数据。
十四:send()方法 发送请求到http服务器并接收回应 XMLHttpRequest.send(varBody); 参数 varBody 欲通过此请求发送的数据。 备注 此方法的同步或异步方式取决于open方法中的bAsync参数,如果bAsync == False,此方法将会等待请求完成或者超时时才会返回,如果bAsync == True,此方法将立即返回。
十五:setRequestHeader 单独指定请求的某个http头
下面是一个例子,我是引用了博客园上的一篇。做一个异步的请求天气预报的页面
http://www.cnblogs.com/vchenpeng/p/3239542.html
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="WeatherForecast.aspx.cs" Inherits="Ajax_WeatherForecast" %>
- <!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 runat="server">
- <title></title>
- <script src="../JS/jquery-1.4.2.js" type="text/javascript"></script>
- <script type="text/javascript">
- function GetData() {
- var xmlhttp; //声明XMLhttpRequest对象
- //根据浏览器类型,取得xmlHttpRequest实例
- if (window.XMLHttpRequest) {
- xmlhttp = new XMLHttpRequest();
- }
- else {
- xmlhttp = new ActiveXObject();
- }
- //onreadyStatechange readyState改变触发函数的句柄,引发后面的函数
- xmlhttp.onreadystatechange = function () {
- if (xmlhttp.readyState == 4) { // 4 (完成) 数据接收完毕
- if (xmlhttp.status == 200) { //200 OK
- alert(xmlhttp.responseText);
- }
- else {
- alert(xmlhttp.status);
- }
- }
- }
- // var url = "returnTime.ashx?t=" + new Date() + "&name=" + encodeURI("学生");
- //这里都不用encodeuri的,奇怪
- //var url = "returnTime.ashx?t=" + new Date() + "&name=学生";
- var url ="weatherForecast.ashx?cityId=101200101";
- xmlhttp.open("GET", url, true);
- xmlhttp.send();
- }
- </script>
- <script type="text/javascript">
- function GetData2() { //利用jquery写ajax,就不需写那么多的判断浏览器是否适合ajax,因为jquery已经帮我们做好相关的判断
- $.post("weatherForecast.ashx?cityId=101200101", "", function (date, status) {
- if (status != "success") { alert("连接服务器有错"); }
- alert(date);
- });
- }
- </script>
- </head>
- <body >
- <form id="form1" runat="server">
- <div>
- <button type="button" value="nihao" onclick="GetData()"> ajax</button>
- <button type="button" value="nihao" onclick="GetData2()"> jquery</button>
- </div>
- </form>
- </body>
- </html>
后台:
- <%@ WebHandler Language="C#" Class="weatherForecast" %>
- using System;
- using System.Web;
- using System.Net;
- using System.IO;
- public class weatherForecast : IHttpHandler {
- public void ProcessRequest (HttpContext context) {
- context.Response.ContentType = "text/plain";
- string cityId = context.Request["cityId"];
- string url = "http://www.weather.com.cn/data/cityinfo/"+cityId+".html";
- string dataBack = GetWeatherInfor(url);
- context.Response.Write(dataBack);
- }
- private string GetWeatherInfor(string url)
- {
- Uri uri = new Uri(url);
- WebRequest webRequest =WebRequest.Create(url);
- WebClient webClient=new WebClient ();
- System.IO.Stream myStream = webClient.OpenRead(url);
- StreamReader reader = new StreamReader(myStream, System.Text.Encoding.UTF8);
- return reader.ReadToEnd();
- }
- public bool IsReusable {
- get {
- return false;
- }
- }
- }
Ajax之XMLHttpRequest的更多相关文章
- AJAX初探,XMLHttpRequest介绍
AJAX初探,XMLHttpRequest介绍 AJAX AJAX = Asynchronous JavaScript and XML. 异步的JavaScript和XML. AJ ...
- Egret和Http请求 (Ajax、XMLHttpRequest、Post、Get)
一 Http请求 二 AJax和XMLHttpRequest 三 一个Ajax例子 四 Egret中的egret.HttpRequest 五 Post和Get区别 一 Http请求 Http深入 ...
- 原生Ajax(XMLHttpRequest)
一.什么是Ajax: 全称Asynchronous JavaScript and XML: 异步的 JavaScript 和 XML: 可以在不重新加载整个页面的情况下(偷偷发数据),与服务器交换数据 ...
- AJAX(XMLHttpRequest)进行跨域请求方法详解
AJAX(XMLHttpRequest)进行跨域请求方法详解(三) 2010年01月11日 08:48:00 阅读数:24213 注意:以下代码请在Firefox 3.5.Chrome 3.0.Saf ...
- 原生ajax、XMLHttpRequest和FetchAPI简单描述
什么是ajax ajax的出现,刚好解决了传统方法的缺陷.AJAX 是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个 ...
- js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可)
js进阶ajax的XMLHttpRequest对象的status和statustext属性(如果ajax和php联合使用的话:open连接服务器的第二个参数文件路径改成请求php的url即可) 一.总 ...
- 原生实现ajax解析--XMLHttpRequest
ajax基础: Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求. 如果仔细观察一个Form的提交,你就会发现,一旦用户点击“Submit ...
- js系列教程11-json、ajax(XMLHttpRequest)、comet、SSE、WebSocket全解
js系列教程11-json.ajax(XMLHttpRequest).comet.SSE.WebSocket全解:https://blog.csdn.net/luanpeng825485697/art ...
- Ajax 与 XmlHttpRequest
AJAX描述了确保Web应用在Web服务器请求新数据的情况下也能(几乎)实时反应的一种方法.具体地说,AJAX只是一些建立已久的技术的相互作用,从HTML.XHTML和HTTP,到JavaScript ...
- AJAX——核心XMLHttpRequest对象
AJAX大家已经都知道了,是为了实现异步通讯,提高用户体验度,而将很多旧知识(XML,DOM,JavaScript,HTML,Jquery,Css……)重新融合的一个新的知识框架.而,XMLHttpR ...
随机推荐
- ORA-01146: cannot start online backup - file 1 is already in backup ORA-01110: data file 1: 'C:\ORACLE\ORADATA\ORCL8\SYSTEM01.DBF'
问题: Error: [1146] ORA-01146: cannot start online backup - file 1 is already in backup ORA-01110: dat ...
- js内置对象中获取时间的用法--通过date对象获取。
Date对象: var today = new Date(); //年份: var year = today.getFullYear(); //月份 var month = today.getMont ...
- jQuery样式与动画
修改内联CSS .css() 获取 //取得单个属性的值,传入'属性名',返回"value" .css('property') //取得多个属性的值,传入'['属性1','属性2' ...
- sql语句中避免使用mysql函数,提升mysql处理能力。
如下sql中不要用mysql内置函数now()等,这样第一可以提高sql执行效率,第二统一程序层处理sql中时间参数,避免因服务器时间差导致问题产生. 使用PDO预处理,第一可以提高sql效率,第二可 ...
- php效率优化
php效率优化 最近在公司一边自学一边写PHP程序,由于公司对程序的运行效率要求很高,而自己又是个新手,一开始就注意程序的效率很重要,这里就结合网上的一些资料,总结下php程序效率优化的一些策略:1. ...
- teamviewer14商用试用期到期从新安装使用
teamviewer14商用试用期到期从新安装使用 1)1.退出TeamViewer远程软件,卸载软件.2)2.按键盘的[win]+[R]组合键打开[运行],输入 %appdata%3)3.在弹出的窗 ...
- leetcode477
public class Solution { public int TotalHammingDistance(int[] nums) { , n = nums.Length; ; j < ; ...
- 解决编译错误 implicit declaration of function 'strptime'
根据man手册,在文件中加上以下定义,应该可以去处该warning #define _XOPEN_SOURCE /* glibc2 needs this */ #inclu ...
- python+Django创建第一个项目
1.首先搭建好环境 1.1 安装pyhton,Linux系统中,python是系统自带的所以就不用安装 1.2 安装Django框架 使用pip安装: pip install django 1.3 检 ...
- linux安装mysql服务分两种安装方法:
linux安装mysql服务分两种安装方法: ①源码安装,优点是安装包比较小,只有十多M,缺点是安装依赖的库多,安装编译时间长,安装步骤复杂容易出错: ②使用官方编译好的二进制文件安装,优点是安装速度 ...