ASP.NET知识总结(8.AJAX异步)

本文详细介绍了AJAX的工作原理、特点、XMLHttpRequest对象的使用方法,包括异步请求的基本步骤、创建XMLHttpRequest对象、编写回调函数、异步对象readyState属性、XMLHttpRequest对象属性与常用方法,以及在实际应用中的注意事项。
AJAX:” Asynchronous JavaScript and XML” 中文意思: 异步JavaScript和XML指一种创建交互式网页应用的网页开发技术。
 
不是指一种单一的技术,而是有机地利用了一系列相关的技术: 简单理解为:JavaScript + XMLHttpRequest + CSS +服务器端 的集合
 
 
 
AJAX特点
Ajax在本质上是一个浏览器端的技术 Ajax技术之主要目的在于局部交换客户端及服务器间之数据
这个技术的主角XMLHttpRequest 的最主要特点,在于能够不用重新载入整个版面来更新资料,也就是所谓的Refresh without Reload(轻刷新) 与服务器之间的沟通,完全是透过Javascript 来实行 使用XMLHttpRequest 本身传送的数据量很小,所以反应会更快,也就让网络程式更像一个桌面应用程序 AJAX 就是运用Javascript 在后台悄悄帮你去跟服务器要资料,最后再由Javascript 或DOM 来帮你呈现结果,因为所有动作都是由Javascript 代劳,所以省去了网页重载的麻烦,使用者也感受不到等待的痛苦 注:JavaScript是一门单线程语言。无法将指定的一段js开启一个新的线程来执行。 
 
 
XMLHttpRequest对象
简而言之:它可以异步从服务器端获取txt或者xml数据 老版本IE:             new ActiveXObject("Microsoft.XMLHTTP"); 新版本浏览器:             new XMLHttpRequest();
 
 
异步请求基本步骤
使用XMLHttpRequest对象  按照下面模式,可以同步地XMLHttpRequest对象:
 
创建对象; - new  (叫助手过来) 创建请求; - open (告诉他要去做的事情) 发送请求; - send (去吧)
 
主要方法及操作步骤:  <1>获取对象:构造方法  <2>建立连接:方法open(method(采用HTTP协议请求方式GET  POST),url(网址地址),isAsync(是否异步  true---同意异步))  <3>配置获取反馈:属性onreadystatechange(状态变化的监听)  <4>发送消息:方法send
 
 
创建XMLHttpRequest对象
先来创建XMLHttpRequest对象 在IE、Firefox、safari和Opera中创建该对象的JavaScript代码为:  var xhr = new XMLHttpRequest(); 在IE5/6中代码为:  var xmlRequest = new ActiveXObject(“Microsoft.XMLHTTP”);   注意,JavaScript区分大小写。
 
 
编写回调函数
1.在xhr.send之前添加设置回调函数代码: xhr.onreadystatechange = watching;
2.回调函数 function watching() {        if (xhr.readyState == 4) {//请求状态            if (xhr.status == 200) {//服务器返回的状态码                var msg = xhr.responseText; //服务器返回的字符串            } else alert("服务器错误!" + ajaxH.status);        } } 判断时注意,要:xhr.readyState == 4&&xhr.status == 200,不要xhr.status == 200&&xhr.readyState == 4
 
 
异步对象readyState属性
readyState属性   readyState属性指出了XMLHttpRequest对象在发送/接收数据过程中所处的几个状态。XMLHttpRequest对象会经历5种不同的状态。 0:未初始化。new完后; 1:已打开。对象已经创建并初始化,但还未调用send方法 2:已发送。已经调用send 方法,但该对象正在等待状态码和头的返回; 3:正在接收。已经接收了部分数据,但还不能使用该对象的属性和方法,因为状态和响应头不完整; 4:已加载。所有数据接收完毕
 
 
XMLHttpRequest对象属性
一、 onreadystatechange属性,设置回调函数。 二、 readyState属性,获取当前XMLHttpRequest对象执行的状态:  1> 0表示以创建XMLHttpRequest对象,但是还没有初始化,即没有调用open()方法设置XMLHttpRequest对象。  2>1表示创建了XMLHttpRequest对象,并且调用了open()方法进行初始化,但是还没有调用send()方法。  3>3表示浏览器正在接受服务器的响应数据。  4>所有数据已经被接受完毕。 三、 status属性,服务器返回的http状态码。(>=200 and <300、304未修改,读取缓存。都表示成功) 四、 statusText属性,服务器返回的状态码对应的友好的文字说明,比如200对应的OK. 五、 responseText属性,以字符串方式获取服务器对客户端的响应。 六、 responseXml属性,当请求的是一个xml文件时,或者响应头中Content-Type为:text/xml或application/xml时,返回一个XmlDocument对象(Dom节点对象),支持标准的dom的成员,比如:childNodes、documentElement、firstChild、lastChild、nextSibling、nodeName、nodeType、nodeValue、parentNode、doctype等。
 
 
XMLHttpRequest对象常用方法
一、 open("get","url",true)初始化,如果第三个参数为false,则js等待请求完毕后才会继续执行。 二、 setRequestHeader("","")增加http请求头信息。在open()之后,send()之前调用。 三、 send(null);发送请求。send()方法的参数表示为在请求报文体中发送的数据内容。为了最大化的浏览器兼容问题,如果没有请求报文体就传递null。get请求没有请求报文体,所以一般为null。使用post请求时才需要设置报文体。 四、 getResponseHeader("Content-Type"),根据响应的报文头获得报文内容。 五、 getAllResponseHeaders();获取所有的响应报文头内容。 六、 abort();取消当前的http请求,取消之后如果要重新发起请求,建议重新创建一个XMLHttpRequest对象。
 
 
 
XMLHttpRequest常用方法
           方法                                                           说明 abort                                     取消请求 open                                     需要使用多个参数,第一个设置方法属性,第二个设置目标URL,第三个指定是同步(false)还是异步(true)发送请求 send                                      发送请求到服务器 setRequestHeader()                添加自定义HTTP头到请求 getAllResponseHeaders()         获取HTTP响应头的整个列表 getResponseHeader('key')       仅获取指定的HTTP响应头
 
 
XMLHttpRequest常用属性
        属性                                                         说明 onreadystatechange                           返回或设置异步请求的事件处理程序 readyState                                        返回状态码:0:未初始化;1:打开;2:发送;3:正在接收;4:已加载 responseText                                    使用字符串返回HTTP响应 responseXML                                     使用XML DOM对象返回HTTP响应,返回的是一个对象,不是xml字符串。 status                                                返回HTTP状态码
 
Ajax使用注意
xhr只能向同一个域中的相同端口号、相同协议的url发起请求,不能跨域,否则会引起错误。 为了浏览器兼容,get请求时最好为send()传递null参数。 在创建了xhr对象后立刻设置onreadystatechange事件,这样就能监视到所有的状态。如果不需要监视其他状态只监视readyState==4的状态则可以在send()之后设置。 get请求时,请求中的QueryString的参数名称与参数值最好使用encodeURIComponent()进行编码。否则在某些浏览器下无法获取该值,比如IE. post请求时,为了像表单那样提交数据需要设置请求的Content-Type为:application/x-www-form-urlencoded。send("键=值&键=值") 解析json格式时eval("("+json+")")。但有安全性问题。
 
 
-》使用注意 -》示例2:使用post方式提交  需要设置头信息:xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); -》如果中文乱码的解决:在客户端使用window.encodeURIComponent()进行编码   在服务器端使用Server.UrlDecode()进行解码
 
<!DOCTYPE html> <html xmlns=" http://www.w3.org/1999/xhtml"> <head>     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />     <title></title>
 
    <script type="text/javascript">         window.onload = function () {             var btnGettime = document.getElementById("btnGetTime");             btnGettime.onclick = function () {
 
                //--------GET-------------                 ////1.创建对象                 //var xhr = new XMLHttpRequest();                 ////2.打开连接                 //xhr.open('get', 'GetTime.ashx?title=xlb', true);                 ////3.配置                 //xhr.onreadystatechange = function () {                 //    //如果成功返回则展示                 //    if (xhr.readyState==4) {//通信成功                 //        if (xhr.status == 200)//成功返回信息                 //        {                 //            var showTime = document.getElementById('showTime');                 //            showTime.innerHTML = xhr.responseText;                 //        }                 //    }                 //};                 ////4.发送                 //xhr.send(null);//当使用GET请求时,最好设置为null
 
 
 
                //-----------POST--------------
 
                var showTime = document.getElementById('showTime');                 showTime.innerHTML = '<img src="images/loading.gif" />';
 
                //1.创建对象                 var xhr = new XMLHttpRequest();                 //2.打开连接                 xhr.open('post', 'GetTime.ashx', true);                 //3.配置                 xhr.onreadystatechange = function () {                     //如果成功返回则展示                     if (xhr.readyState == 4) {//通信成功                         if (xhr.status == 200)//成功返回信息                         {                             var showTime = document.getElementById('showTime');                             showTime.innerHTML = xhr.responseText;                         }                     }                 };                 //4.发送                 //以post请求发送请求                 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");                 xhr.send('title=yg');
 
            }
 
        }     </script>
 
</head> <body>     <input type="button" id="btnGetTime" value="获取当前时间" />     <div id="showTime">
 
    </div> </body> </html>
 
--------GetTime.ashx----------
using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Web;
 
namespace t1_HelloWorld {     /// <summary>     /// GetTime 的摘要说明     /// </summary>     public class GetTime : IHttpHandler     {
 
        public void ProcessRequest(HttpContext context)         {
 
            Thread.Sleep(5000);
 
            string title = context.Request["title"];             context.Response.ContentType = "text/plain";             context.Response.Write(DateTime.Now.ToString()+"---"+title);         }
 
        public bool IsReusable         {             get             {                 return false;             }         }     } }
 
=======================================================
使用jquery完成异步操作 -》参考文档介绍提供的异步api  url:请求地址  type:请求方式,主要是get、post  data:{}:请求的数据  dataType:返回值的类型,主要有xml、text、json、script、html  success:function(data){...}成功的回调函数(4,200)
豌豆代理(又称豌豆 IP)是一款一站式国内代理 IP 服务平台,主打高匿名、低延迟、高可用的 IP 资源,支持 HTTP/HTTPS/SOCKS5 协议,适配 Windows、Mac、Android、iOS 多平台。 多类型 IP 资源与高覆盖节点 提供动态住宅 IP、静态独享 IP、数据中心 IP,覆盖全国 200 + 城市,可用率 99%+;支持省市精准选择或全国混拨,适配不同业务合规与稳定性需求。 使用:在客户端 “节点 / 线路” 页,按城市 / 类型筛选,一键连接目标 IP,适合爬虫、电商多账号运营等场景。 秒级 IP 切换与灵活调度 支持手动一键切换、秒级动态切换(切换速度低至 100ms)、定时切换(自定义时长),并自动过滤重复 IP,避免重复使用导致风险。 使用:在 “设置” 中开启 “自动切换” 并设时间间隔,或按 Ctrl+Q 快捷键一键换 IP,适配反爬虫、批量测试等高频切换场景。 全协议支持与多端适配 兼容 HTTP/HTTPS/SOCKS5 主流代理协议,可对接浏览器、爬虫脚本、客户端软件;支持 Windows、Mac、安卓、iOS 多端同步使用,跨设备无缝切换。 使用:在客户端 “协议设置” 选择对应协议,生成代理地址与端口,直接填入目标软件即可生效。 隐私安全与数据加密 自研传输加密技术保护数据传输,搭配高匿名 IP 隐藏真实地址,同时支持自动清除 Cookie / 缓存,降低隐私泄露与追踪风险。 使用:在 “安全设置” 中开启 “数据加密” 与 “自动清理缓存”,公共 WiFi 环境下优先启用,提升隐私防护等级。 智能筛选与稳定网络优化 系统自动筛选低延迟、高可用 IP,过滤失效 / 重复地址;依托自建纯净机房与独享带宽,搭配 BGP 多线接入,保障连接稳定性与速度。 使用:无需手动配置,客户端默认智能匹配合适节点,复杂网络环境可在 “网络
在网络高速发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,商家只能以用户为导向,以商品的持续创新作为商家最重要的事项。 在新发展的时代,人们对幼儿资源互助共享平台越来越重视,才能实现幼儿资源互助共享平台的有效发挥,本文将通过幼儿资源互助共享平台的信息,分析在日常生活中对幼儿资源互助共享平台存在哪些问题探讨出进一步提升效率,管理能力的对策。 系统采用了Java技术,将所有模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,来进行系统的设计。基本实现了幼儿资源互助共享平台应有的主要功能模块,本系统有管理员:首页、个人中心、用户管理、卖家管理、咨询师管理、萌宝信息管理、幼儿知识管理、保姆推荐管理、音频资源管理、二手商品管理、商品分类管理、资源分类管理、交流论坛、系统管理,用户;首页、个人中心、萌宝信息管理、保姆推荐管理、音频资源管理,卖家;首页、个人中心、二手商品管理、订单管理,咨询师;首页、个人中心、幼儿知识管理,前台首页;首页、萌宝信息、幼儿知识、保姆推荐、音频资源、二手商品、交流论坛、个人中心、后台管理、购物车等功能。 对系统进行测试后,改善了程序逻辑和代码。同时确保系统中所有的程序都能正常运行,所有的功能都能操作,本系统的开发获取幼儿资源互助共享平台信息能够更加方便快捷,同时也使幼儿资源互助共享平台信息变的更加系统化、有序化。系统界面较友好,易于操作。
创新!高级!【日前、日内非滚动、日内滚动调度以及实时修正】考虑需求侧响应的智慧楼宇多时间尺度调度策略(Matlab代码实现)内容概要:本文介绍了名为“创新!高级!【日前、日内非滚动、日内滚动调度以及实时修正】考虑需求侧响应的智慧楼宇多时间尺度调度策略”的Matlab代码实现资源,重点围绕智慧楼宇在多时间尺度下的能量调度优化展开,涵盖日前调度、日内非滚动调度、日内滚动调度及实时修正四个阶段,并充分考虑需求侧响应机制,旨在提升能源利用效率与系统运行经济性。该资源提供了完整的Matlab代码实现,适用于科研复现与工程仿真,属于电力系统与智能建筑交叉领域的前沿研究内容。; 适合人群:具备一定电力系统背景、能源管理或自动化专业知识,熟悉Matlab编程,从事科研、教学或工程应用的研究生、高校教师及研发人员;尤其适合开展综合能源系统、需求响应、微电网调度等相关课题的研究者。; 使用场景及目标:①用于智慧楼宇多时间尺度优化调度模型的搭建与仿真;②支持考虑需求侧响应的电能管理策略研究;③服务于学术论文复现、毕业设计或科研项目开发,帮助理解多阶段优化架构与Matlab求解器应用。; 阅读建议:建议结合电力系统优化理论与Matlab编程实践同步学习,重点关注各调度阶段的数学建模思路与代码实现逻辑,推荐使用YALMIP+CPLEX等工具包进行求解,同时参考文中提及的网盘资料获取完整代码与案例数据以提升学习效率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值