《jquery权威指南》读书笔记之第六章--Ajax在jquery中的应用

本文详细介绍了Ajax技术及其在网页开发中的应用,并深入探讨了如何使用jQuery简化Ajax操作,包括数据加载、处理及异步请求等多种场景。
一、谈谈Ajax,Asynchronous JavaScript and XML的缩写,其核心是通过XMLHttpRequest对象以一种异步的方式,想服务器发送数据请求,并通过该对象接受请求返回的数据,从而完成人机交互的数据操作。这种利用Ajax技术进行的数据交互并不局限与web动态页面,在普通的静态HTML页面中同样可以实现,因此,在这样的背景下,Ajax技术在页面开发中得以广泛使用。
<html>
     <head>
           <meta charset="UTF-8">
           <style>
                body{background-color: gray;}
                div {background-color: pink;margin-top: 3px;}
           </style>
     </head>
     <body>
           <div class="divTitle">
                <input id="Button1" type="button" value="获取数据" onclick = "GetSendData()"/>
           </div>     
           <div class="divContent">
                <div id="divTip"></div>
           </div>
           <script>
                var objXmlHttp = null;   //先定义一个空变量
                function CreatXmlHttp(){
                      if(window.ActiveXObject){       //根据浏览器类型设定不同的值
                           objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                      }
                      else{
                          if(window.XMLHttpRequest){
                                objXmlHttp = new XMLHttpRequest();
                          }
                          else{
                                alert("初始化XMLHTTP错误");
                          }
                      }
                }
                function GetSendData(){
                     document.getElementById("divTip").innerHTML = "<img alt='' title='正在加载中....' src='../img/banner0.jpg' width='20%'/>";
                     var strSendUrl = "b1.html?data="+Date();
                     CreatXmlHttp();
                     objXmlHttp.open("GET",strSendUrl,true);
                     objXmlHttp.onreadystatechange = function(){
                           if(objXmlHttp.readyState == 4){
                                if(objXmlHttp.status == 200){
                                     document.getElementById("divTip").innerHTML = objXmlHttp.responseText;
                                }
                           }
                     }
                     objXmlHttp.send(null);
                }
           </script>
     </body>    
</html>
在javascript中,使用XMLHttpRequest对象异步加载数据;而在jquery中,使用load()方法可以轻松实现异步获取数据的功能。调用的语法格式是:
load(url,[data],[callback])
            url:被加载的页面地址
            data:表示发送到服务器的数据,其格式为key/value。
            callback:表示加载成功后,返回至加载页的回调函数
<div class="divTitle">
                <input id="Button1" type="button" value="获取数据" />
           </div>     
           <div class="divContent">
                <div id="divTip"></div>
           </div>
           <script>
                $(function(){
                     $("#Button1").click(function(){
                           $("#divTip").load("b1.html");
                     })
                });
           </script>


在load()方法中,参数url还可以用于过滤页面中的某类别的元素,如代码$("#divTip").load("b.html .divContent"),则表示获取页面b.html中类别名为“divContent”的全部元素

jquery中的全局函数getJSON()
    虽然使用load()方法可以很快的加载数据到页面中,但有时需要对获取的数据进行处理,如果将用load()方法获取的内容进行遍历,也可以进行数据的处理,但这样获取到内容必须先插入页面中,然后才能进行,因此,执行的效率不高
    $.getJSON(url, [data] [callback])
     <body>
           <div class="divTitle">
                <input id="Button1" type="button" value="获取数据" />
           </div>     
           <div class="divContent">
                <div id="divTip"></div>
           </div>
           <script>
                $(function(){
                     $("#Button1").click(function(){
                          $.getJSON("../data.json",function(data){
                                $("#divTip").empty();
                                var strHTML = "";
                                $.each(data,function(infoIndex,info){
                                     strHTML +="姓名:"+info["name"]+"<br />";
                                     strHTML +="年龄:"+info["age"]+"<br />";
                                     strHTML +="性别:"+info["sex"]+"<hr />"
                                })
                                $("#divTip").html(strHTML);
                           })
                })
                });
           </script>
     </body>    

jquery中的全局函数getScript()

在jquery中,除通过全局函数getJSON获取.json格式的文件内容外,还可以通过另外一个全局函数getScript()获取.js文件的内容。通过全局函数getScript()加载.js文件后,不仅可以向加载页面片段一样轻松的注入脚本,而且所注入的脚本自动执行,达到提高了页面的执行效率。
$.getScript(url, [callback])

<body>
           <div class="divTitle">
                <input id="Button1" type="button" value="获取数据" />
           </div>     
           <div class="divContent">
                <div id="divTip"></div>
           </div>
           <script>
                $(function(){
                     $("#Button1").click(function(){
                           $.getScript("../data.js")
                           })
                });
           </script>
     </body>    

//data.js
var data = [
{"name":"谭青","age":20,"sex":"女"},
{"name":"啊哈","age":10,"sex":"男"},
{"name":"成栋","age": 30,"sex":"男"}
]
var strHTML = "";
$.each(data,function(){
     strHTML +="姓名:"+this["name"]+"<br />";
     strHTML +="年龄:"+this["age"]+"<br />";
     strHTML +="性别:"+this["sex"]+"<hr />"
})
$("#divTip").html(strHTML);


$(function(){
                     $("#Button1").click(function(){
                          $.getScript("../data.js",function(){alert("返回数据成功!!")})         //执行回调函数
                           })
                });

jquery中的全局函数get()

    前面介绍的都是异步加载html、json、js,如果想要异步加载xml文件时可以使用全局函数`$.get(url,[data],[callback],[type]        type:表示返回数据的格式,如html、xml、js、json、text等
-------------请求服务器数据-------------
$.get()
<body>
<div class="divTitle">
<input id="content1" type="text" value="" />
<input id="Button1" type="button" value="获取数据" />
</div>
<div class="divContent">
<div id="divTip"></div>
</div>
<script>
$("#Button1").click(function(){
$.get("data.aspx",{name:encodeURI($("#content1").val())}, //如果名字是中文,则必须进行编码
function(data){
$("#divTip").empty()
.html(data);
}
)
})
</script>
</body>
/*******************************data.aspx*************************/
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<%
string strName = System.Web.HttpUtility.UrlDecode(Request["name"]); /*进行解码*/
string = strHTML = "<div>"
if(strName == "谭青"){
strHTML +="姓名:谭青<br />";
strHTML +="年龄:20";
strHTML +="性别:女"
}else if(strName == "啊哈"){
strHTML +="姓名:啊哈<br />";
strHTML +="年龄:10";
strHTML +="性别:男"
}else if(strName == "aa"){
strHTML +="姓名:aa<br />";
strHTML +="年龄:10";
strHTML +="性别:男"
}
strHTML +="</div>";
Response.Write(strHTML);
%>

$.post()
$.post(url, [data], [callback], [type])

$.post()也是待参数向服务器发出数据请求。全局函数$.post()$.get()在本质上没有太大的区别,所不同的是,GET方式怒视和传递数据量较大的数据,同时,其请求的历史信息会保存在浏览器的缓存中,有一定的安全风险。二姨POST方式向服务器发送数据请求,则不存在着两个方面的不足。

<script>
$("#Button1").click(function(){
$.post("data.aspx",{name:encodeURI($("#content1").val()),sex:encodeURI($("#getSex").val())}, //如果名字是中文,则必须进行编码
function(data){
$("#divTip").empty()
.html(data);
}
)
})
</script>

serialize()
在使用全局函数.get().post()向服务器传递参数时,其中的参数就是通过名称属性逐个搜索输入字段的方式进行传输的,如果表单的输入字段过多,这种方式就比较麻烦,而且不利于扩展。为了解决这个问题,jquery引入serialize()方法,该方法可以简化参数传值的方式

serialize()
功能:将所选择的DOM元素转换成能随AJAX传递的字符串,即序列化所选择的DOM元素

注意:虽然serialize()方法可以很完美的模拟浏览器提交表单的操作,同时解决了中文编码的问题,但他有自身的很多不足,如表单中有多项被选中时,该方法只能传递一项的值,因此,在选择传递参数时,需慎重考虑

$.ajax()该方法不仅可以很方便的实现load()、get()、post()三个全局函数完成的功能,还更多的关注实现过程中的细节。
$.ajax([option])
option为$.ajax()方法 中的请求设置,其格式为key/value

$.ajaxSetup([option])
功能:设置全局性Ajax默认选项,一次设置,全局有效这样大大简化了$.ajax()方法中细节的编写,
<script>             
        $(function(){     $.ajaxSetup({type:"get",url:"data.aspx",dataType:"xml"})  //为ajax设置默认值
        });
        $("#Button1").click(function(){
           $.ajax({success:function(data){alert("执行成功")}});
        })
   </script>

—————Ajax中的全局事件———-
由于在使用$.ajax()方法时,其中的选项参数global的值默认情况下为true,也就意味着,所有在执行的Ajax的数据请求,都绑定了全局事件

ajaxComplete(callback)------Ajax请求完成时 执行函数
ajaxError(callback)---------Ajax请求发生错误时执行函数,其中捕捉到的错误可以作为最后一个参数进行传递
ajaxSend(callback)-------Ajax请求发送前执行函数
ajaxStart(callback)------Ajax请求开始时执行函数
ajaxStop(callback)---------Ajax请求结束时执行函数
ajaxSuccess(callback)----------Ajax请求成功时执行函数

说明:在jquery中,所有的全局事件都是以XMLHttpRequest对象和设置作为参数传递给回调函数,在处理回调函数时,只要分析其传回的参数值即可

由于是全局性的事件,因此,只要有Ajax请求发生,就会触发所设置的全局事件,该事件被绑定在某个元素上,通过一些很人性化的显示或隐藏进行切换,极大的丰富了提交数据时的用户体验,同时,也建立了页面加载反馈系统

源码下载地址: https://pan.quark.cn/s/a4b39357ea24 "ZV-1 高级功能使用手册 用户详细指南" 此文档将全面阐述 Sony ZV-1 相机的进阶功能及其操作方法,为用户呈现详尽的操作指引和配置范例。 一、使用指南与摄影技巧 * 本手册旨在协助用户迅速掌握 Sony ZV-1 相机的使用方法 * 提供摄影技巧与操作方法等实用信息 * 可在线查阅配件兼容性详情及配置范例 二、基础操作 * 通过控制轮和菜单选项将常用功能分配至按键 * 探索功能按钮(Fn)与自定义按键的应用 * 学习显示(DISP)按钮的操作方法 * 明确拍摄及浏览时图标与提示的展示方式 三、电源与存储介质 * 查询电池续航时间及可拍摄照片数量 * 注意电池使用规范及更换事项 * 掌握存储卡插入方法及注意事项 四、语言与时间设定 * 说明语言及时间配置流程 * 熟悉相机内部功能说明和拍摄模式选择 五、拍摄模式与对焦系统 * 探究拍摄模式和对焦模式的选择 * 了解自动对焦、人脸/眼部自动对焦设置及主体追踪功能 * 掌握手动对焦和直接手动对焦(DMF)操作 * 理解峰值对焦设置及拍摄模式选择 六、触控操作与视频录制 * 阐明触控功能特性及触控快门使用 * 学习触控对焦与触控追踪功能 * 掌握视频录制模式及高帧速率(HFR)设置 * 了解智能自动与场景识别程序 七、曝光调整与白平衡 * 熟悉曝光模式和白平衡配置 * 探究ISO感光度调节与变焦功能 * 学习自动HDR及动态范围优化(DRO)技术 八、图像处理与编辑功能 * 明确图像质量与文件格式选项 * 了解美肤效果与自动构图功能 * 掌握色彩空间选择与快门速度设置 * 探索降噪处理及高ISO降噪技术 九、闪光灯与人脸识...
内容概要:本文围绕“重磅粉丝福利专栏1.8配电网分布式能源的选址与定容系列”展开,系统涵盖了电力系统与智能优化领域的多项前沿科研主题,重点聚焦于配电网中分布式能源的规划与优化问题。内容涉及三相PWM换流器建模、微电网控制、电动汽车有序充电、风光储协同调度、源网荷储一体化优化、双层优化与ADMM分布式算法等核心技术,并结合Matlab/Simulink仿真工具实现多种复杂场景的建模与求解。文档列举了大量具体研究案例,如基于粒子群算法的参数辨识、多目标路径规划、需求响应下的供电能力评估等,突出其在科研复现、算法创新与工程应用中的实用价值。整体资源体系庞大,强调“借力科研”,倡导通过成熟工具与方法提升研究效率与创新能力。; 适合人群:具备一定电力系统、自动化或相关工程背景,熟悉Matlab/Simulink环境,从事科研工作1-3年的研究生、科研人员或工程师。; 使用场景及目标:①用于复现高水平论文(如硕士、博士论文及EI期刊)中的算法与仿真模型;②支持科研项目中关于分布式能源规划、微电网优化、智能调度与控制策略的设计与验证;③辅助完成课程设计、毕业设计或科研竞赛中的仿真建模任务。; 阅读建议:建议读者按照文档提供的目录结构系统性浏览,优先关注与自身研究方向匹配的模块,结合提供的代码资源与仿真模型进行实践操作,注重理论分析与仿真实现的结合,以提升科研效率与创新能力。
内容概要:本文针对不对称电网故障下T型三电平逆变器的低电压穿越(LVRT)问题,提出了一种多目标协同控制策略。该策略深度融合正负序分离技术、电网电压前馈控制与先进的DPWMA调制方法,构建了完整的控制系统架构,旨在实现故障期间负序电流的有效抑制、并网功率的平稳输出以及动态响应速度的显著提升。研究通过Simulink平台建立了详细的T型三电平逆变器仿真模型,对所提控制策略在稳态运行、电网电压不平衡跌落及动态切换等多种工况下的性能进行了全面验证。仿真结果表明,该方案能有效改善并网电流质量,减小功率波动,增强系统在恶劣电网条件下的运行稳定性与鲁棒性,为高比例新能源接入背景下提升电力电子设备的故障穿越能力提供了有效的技术路径。; 适合人群:具备电力电子与电力系统基础知识,从事新能源并网、逆变器控制或微电网技术研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究T型三电平逆变器在不对称电网故障下的动态行为与控制难点;②掌握正负序分离、DPWMA调制、电网前馈等关键技术的设计与实现方法;③为高比例新能源接入背景下提升并网设备低电压穿越能力提供理论支持与仿真验证手段; 阅读建议:建议结合Simulink仿真模型同步学习,重点关注控制策略的结构设计与各模块间的协同机制,深入理解正负序解耦控制与前馈补偿对系统性能的提升作用,并可通过调整故障条件进行对比实验以加深理解。
内容概要:本文提出了一种融合在线鲁棒主成分分析(RPCA)与长短期记忆(LSTM)循环神经网络的商品需求预测方法,旨在应对实际商业数据中存在的噪声与异常值问题,提升预测精度与时序建模能力。该方法首先通过在线RPCA模型对原始需求序列进行实时分解,将数据分离为低秩趋势成分和稀疏异常成分,从而有效剔除突发性扰动和噪声干扰;随后,利用LSTM网络对清洗后的低秩趋势序列进行深度时序学习,充分捕捉其中的长期依赖关系、周期性模式及非线性动态特征,最终实现高鲁棒性与高精度的需求预测。整个框架具有良好的在线更新能力,适用于动态变化的零售、电商等业务场景,并基于Python实现了完整的算法流程。; 适合人群:具备一定Python编程能力与机器学习基础,从事数据分析、供应链管理、智能预测等相关工作的科研人员与工程技术人员,尤其适合高校研究生及企业中从事智能零售与运营优化的研发人员。; 使用场景及目标:①应用于零售、电商、物流等行业中的商品销量预测任务,优化库存管理与补货决策;②为含噪声、异常点及时序突变的实际业务数据提供鲁棒的预处理与建模方案;③作为深度学习与鲁棒统计方法融合的典型案例,推动时序预测领域中模型可解释性与稳定性的研究发展。; 阅读建议:建议读者结合提供的Python代码深入理解在线RPCA与LSTM的集成机制,重点关注数据分解、特征提取与模型训练的衔接过程,并尝试在真实业务数据上进行复现与调参,以掌握其在不同噪声环境下的适应性与优化策略。
代码转载自:https://pan.quark.cn/s/b74aefe9b70c **OpenJDK 1.8的获取与安装教程** OpenJDK(Open Source Java Development Kit)被视为Java开发工具集的一个开源版本,它提供了Java SE(Standard Edition)平台的核心功能。在众多开发情境中,尤其是涉及微信生态系统的开发,例如加密与解密操作,OpenJDK 1.8版本因其可靠性和兼容性而得到广泛采纳。本指南将详尽阐述如何获取并安装OpenJDK 1.8,以确保在开展微信相关开发活动时能够顺利实施。 ### 1. **认识OpenJDK 1.8** OpenJDK 1.8是Java 8的一个开源版本,它引入了多项关键的新功能,包括Lambda表达式、对函数式编程的支持、Stream API、默认方法以及改良的Date和Time API等。对于微信生态系统的开发而言,这些功能有助于提升代码的可读性和执行效率。 ### 2. **获取OpenJDK 1.8** 用户需要访问OpenJDK的官方网站或镜像站点,比如AdoptOpenJDK或Azul Systems,下载与其操作系统相匹配的OpenJDK 1.8版本。务必确认选择正确的体系结构,比如32位(i586)或64位(x64)。在下载阶段,用户可以选择HotSpot虚拟机或J9虚拟机,两者均为OpenJDK的实现,但性能表现可能存在差异。 ### 3. **安装OpenJDK 1.8** #### 针对Windows用户: 1. 下载结束后,执行安装程序(.msi文件),依照指示完成安装。 2. 在安装期间,可以指定安装路径,推荐采用默认设置,以防止后续配置...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值