jquery_2.3 Ajax操作新
jquery $.ajax 同步调用 实现原理

jquery $.ajax 同步调用实现原理jQuery .ajax 同步调用实现原理在前端开发中,经常会涉及到使用Ajax进行异步请求。
而jQuery库中的.ajax()方法是非常常用的一种实现方式。
.ajax()方法使用起来非常方便,可以对数据进行异步请求,并且可以设置回调函数来处理返回的数据。
但是有时候我们需要在请求完成之前进行一些操作,此时可以使用同步调用的方式来实现。
本文将详细介绍使用jQuery .ajax()方法进行同步请求的实现原理。
1. .ajax()方法简介.ajax()是jQuery库中用于发送HTTP请求的核心方法。
它是一个异步方法,可以向服务器发送GET、POST等请求,并处理服务器返回的数据。
.ajax()方法使用一个包含键值对的配置对象作为参数,可以设置请求的地址、请求方式、请求参数、回调函数等。
当请求完成时,可以在回调函数中处理返回的数据。
2. 异步请求与同步请求的区别在讲解实现原理之前,我们先来了解一下异步请求和同步请求的区别:- 异步请求:是指在发送请求的同时,主线程不会阻塞,而是继续执行后续的代码。
当请求完成后,会通过回调函数来处理返回的数据。
异步请求一般使用于需要较长时间才能返回结果的场景,如网络请求、文件上传等。
- 同步请求:是指在发送请求的同时,主线程会一直等待请求的响应结果,而不会继续执行后续的代码。
只有在请求完成后,才会继续执行下面的代码。
同步请求一般使用于需要立即获取结果的场景,如表单提交、页面加载等。
在默认情况下,.ajax()方法是异步请求的,即发送请求后会继续执行后续的代码。
而实现同步请求则需要额外的设置。
3. 同步请求的设置要实现同步请求,可以通过设置.ajax()方法的async选项为false来实现。
async的默认值为true,表示异步请求,当设置为false时表示同步请求。
示例代码:javascript.ajax({url: 'example',async: false,其他配置项...success: function(data) {处理返回的数据}});4. 同步请求的实现原理实现同步请求的关键在于事先知道请求需要的时间,以便正确地进行阻塞。
简述jquery的常用操作及用法

简述jquery的常用操作及用法jQuery是一种流行的JavaScript库,它极大地简化了JavaScript编程,并提供了一些强大的工具和功能,使得开发者可以更容易地处理HTML文档、处理事件、创建动画效果、处理Ajax请求等。
下面将简述jQuery的常用操作及用法。
2. 事件处理(Event Handling):jQuery可以轻松地添加和处理各种事件,如点击事件、鼠标移动事件、键盘事件等。
通过使用on(方法,可以为元素添加事件处理程序,例如:$("button").on("click",function( { alert("Clicked!") })为所有button元素添加点击事件处理程序。
3. 动画效果(Animation Effects):jQuery提供了丰富的动画效果,可以创建各种效果,如淡入淡出、滑动、展开、收缩等。
通过使用animate(方法,可以改变元素的CSS属性,从而实现动画效果,例如:$("div").animate({width: "300px"}, 1000)将div元素的宽度动画过渡到300px,持续时间为1秒。
4. Ajax请求(Ajax Requests):jQuery封装了对Ajax请求的处理,使得发送和接收数据变得简单和直观。
通过使用ajax(方法,可以发送HTTP请求并处理响应,例如:$.ajax({ url: "data.php", success: function(data) { console.log(data); } })发送一个GET请求到data.php,并在成功时打印响应数据。
5. DOM操作(DOM Manipulation):jQuery提供了许多方法来操作HTML文档的DOM元素,如添加、修改、删除元素等。
通过使用append(、html(、remove(等方法,可以方便地操作DOM元素,例如:$("ul").append("<li>New item</li>")将一个新的li元素添加到ul列表中。
jQuery_ajax培训教程1

[attribute$=value] 选取属性值以value结束 元素集 $('a[href^="mailto:"]').addClass('mailto'); 的所有元素 合 [attribute*=value]
获取不包含class=ho的 <li>元素 $('a[href$=".xsl"]'):获取所有包含href属性,且属性
window.onload()
网页中所有的内容都加载完毕后触发,包括 元素关联的内容(如链接的图片和资源)都 必须下载完毕后触发 同时编写多个,但只能执行最后一个 无
执行个数 简化写法
jQuery对象
jQuery对象和DOM对象之间的转换
1.3 选择器
CSS选择器
选择器 说明
根据id选择元素 根据类名选择元素 根据标记名选择元素 选择所有元素 将每一个选择器匹配的元 素合并后一起返回
$('td:contains("gmail")').addClass('highlight'); //高亮显示email中有gmail的文本 //为表格行绑定事件,使用jQuery的链式语法连续绑定两个事件到同一个对象 素
获取所有不可用的元素 $('.emp tr').mouseover(function() {
[attribute^=value] 选取属性值以value开头
获取id=menu的元素内的所 有<li>子元素 $(‘li[title!=test2]’):获取所有包含title属性且属性
值不等于test2的<li>元素
jQuery中的Ajax几种请求方法

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。
废话少说,直接进入正题,我们先来看一些简单的方法,这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到).1. load( url, [data], [callback] ) :载入远程HTML 文件代码并插入至DOM 中。
url (String) : 请求的HTML页的URL地址。
data (Map) : (可选参数) 发送至服务器的key/value 数据。
callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。
这个方法默认使用GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。
jQuery 1.2 中,可以指定选择符,来筛选载入的HTML 文档,DOM 中将仅插入筛选出的HTML 代码。
语法形如"url #some > selector"。
这个方法可以很方便的动态加载一些HTML文件,例如表单。
示例代码:$(".ajax.load").load("[url]/QLeelulu/archive/2008/03/30/1130270.html[/url] .post",function (responseText, textStatus, XMLHttpRequest){this;//在这里this指向的是当前的DOM对象,即$(".ajax.load")[0]//alert(responseText);//请求返回的内容//alert(textStatus);//请求状态:success,error//alert(XMLHttpRequest);//XMLHttpRequest对象});这里将显示结果。
jquery中$.ajax()方法使用详解

jquery中$.ajax()⽅法使⽤详解1.url说明:发送请求的地址(默认为当前页⾯),要求是String类型的参数,⽐如是.net下,"~wexin(控制器)/getweinxinmenu(动作)",2.type说明:请求⽅法(post或者get),默认是get,要求是String类型的参数。
其他的htpp请求如(put、delete)等也⽀持,但是要浏览器⽀持3.timeout说明:设置请求超时时间(毫秒),要求是number类型的参数。
此设置将覆盖$.ajaxSetup()⽅法的全局设置。
4.async说明:默认值为true,所有请求是异步,要求是Bool类型的参数,如果需要发送同步请求,将此项设置为false。
注意:同步时浏览器会被锁住。
5.cache说明:默认为true(当datatype为script时,默认为false)从浏览器缓存中加载请求信息,要求是Bool类型的参数。
6.data说明:发送到服务器的数据,要求是Object或string类型的参数。
如果已经不是字符串,将⾃动转换为字符串格式。
get请求中将附加在url 后。
防⽌这种⾃动转换,可以查看 processData选项。
对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。
如果是数组,JQuery将⾃动为不同值对应同⼀个名称。
例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。
7.dataType:说明:预期服务器返回的数据类型,要求为String类型的参数。
如果不指定,JQuery将⾃动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。
jQuery调用AJAX异步操作超清晰教程

JQUERY AJAX异步操作详细说明AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和XML)。
它并非一种新的技术,而是以下几种原有技术的结合体。
1)使用CSS和XHTML来表示。
2)使用DOM模型来交互和动态显示。
3)使用XMLHttpRequest来和服务器进行异步通信。
4)使用javascript来绑定和调用。
通过AJAX异步技术,可以在客户端脚本与web服务器交互数据的过程中使用XMLHttpRequest对象来完成HTTP请求(Request)/应答(Response)模型:1)不需要用户等待服务端响应。
在异步派发XMLHttpRequest请求后控制权马上就被返回到浏览器。
界面不会出现白板,在得到服务器响应之前还可以友好的给出一个加载提示。
2)不需要重新加载整个页面。
为XMLHttpRequest注册一个回调函数,待服务器响应到达时,触发回调函数,并且传递所需的少量数据。
“按需取数据”也降低了服务器的压力。
3)不需要使用隐藏或内嵌的框架。
在XHR对象之前,模拟Ajax通信通常使用hack手段,如使用隐藏的或内嵌的框架(<iframe>标签)。
下面介绍下AJAX中的重要对象:XMLHttpRequest。
XMLHttpRequest对象(XHR)XMLHttpRequest是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或接收XML及其他数据的一套API。
XMLHttpRequest对象首次以ActiveX对象形式在微软Internet Explorer(IE) 5中以引入。
其他浏览器制造商在认识到这一对象重要性后也纷纷实现了XMLHttpRequest对象,但是以一个本地JavaScript对象而不是作为一个ActiveX 对象实现。
而如今,由于安全性、标准等问题,微软已经在其IE 7中把XMLHttpRequest实现为一个本地JavaScript对象。
jqajax传递json对象到服务端及contentType的用法
jqajax传递json对象到服务端及contentType的⽤法⽬录0、⼀般情况下,通过键值对的⽅式将参数传递到服务端0.1 客户端代码:$.ajax({url: 'TestHandler.ashx',type: 'post',data: {name: "admin",age: 10},dataType: 'text',success: function (data) {alert(data);}})0.2 服务端代码:public void ProcessRequest(HttpContext context){string bodyText = string.Empty;using (var bodyReader = new System.IO.StreamReader(context.Request.InputStream)){bodyText = bodyReader.ReadToEnd();}string name= context.Request["name"].ToString();// "admin"string age = context.Request["age"].ToString();// "10"context.Response.ContentType = "text/plain";context.Response.Write(bodyText);// "name=admin&age=10"}0.3 在浏览器的⽹络中查看此次请求:从上⾯的截图中可以看出,post请求,是将formdata中键值对⽤符号“&”相连,拼接成⼀个字符串,传递到服务端,服务端可以通过key来获取值,或从request的body中读取整个字符串;1、ajax 传递复杂json对象到服务端1.1 ⽅法⼀:通过formdata传值,服务端通过key获取值;客户端代码:var user1 = {username: 'admin',age: 10};var user2 = {username: 'test',age: 11};var userArr = [];userArr.push(user1);userArr.push(user2);$.ajax({url: 'TestHandler.ashx',type: 'post',//contentType: 'application/json',//contentType:"application/x-www-form-urlencoded; charset=UTF-8",data: {Users: JSON.stringify(userArr)},dataType: 'text',success: function (data) {alert(data);}})服务端代码:public void ProcessRequest(HttpContext context){string contentType= context.Request.ContentType;// "application/x-www-form-urlencoded; charset=UTF-8"string users = context.Request["Users"].ToString();dynamic obj = JsonConvert.DeserializeObject(users);context.Response.ContentType = "text/plain";context.Response.Write(obj[0].username);// "admin"}1.2 ⽅法⼆:通过formdata⽅式传值,服务端读取Request.InputStream;前端代码:var user1 = { username: 'admin', age: 10 };var user2 = { username: 'test', age: 11 };var userArr = [];userArr.push(user1);userArr.push(user2);$.ajax({url: 'TestHandler.ashx',type: 'post',//contentType: 'application/json',//contentType:"application/x-www-form-urlencoded; charset=UTF-8",data: JSON.stringify(userArr),dataType: 'text',success: function (data) {alert(data);}})服务端代码:public void ProcessRequest(HttpContext context){string contentType= context.Request.ContentType;//"application/x-www-form-urlencoded; charset=UTF-8"string bodyText = string.Empty;using (var bodyReader = new System.IO.StreamReader(context.Request.InputStream)){bodyText = bodyReader.ReadToEnd();// [{"username":"admin","age":10},{"username":"test","age":11}]}dynamic obj = JsonConvert.DeserializeObject(bodyText);context.Response.ContentType = "text/plain";context.Response.Write(obj[0].username);// "admin"}通过浏览器查看此次请求:从图中可以看出,content-Type 为application/x-www-form-urlencoded,所以浏览器尝试将传输的数据解析成key-value的形式,但实际在ajax中的data中设置的是⼀个json字符串,⽆法解析成key-value的形式,故在服务端⽆法通过key来获取值;只能从Request.InputStream获取。
JQuery中的AJAX详解
JQuery中的AJAX详解目录(?)[-]load()方法load(url,[data],[callback])url为被加载的页面地址data表示发送到服务器的数据,格式为key/valuecallback格式为:function(responseText,textStatus,XMLHttpRequest){ }//responseText:请求返回的内容//textStatus:请求状态:success、error、notmodified、timeout这4种//XMLHttpRequest:XMLHttpRequest对象load()方法的传递方式根据参数data来自动指定。
如果没有参数传递,则采用GET方式传递;反之,则自动转换为POST 方式[javascript]view plaincopyprint?1.$("#div1").load(2."jsp/feed.jsp", //如果为" jsp/feed.jsp .filterClass",则表示获取jsp页面中类名为filterClass的全部元素3.{4. name :clf, age : 255.//经测试,变量名加引号、单引号、不加引号,后台都能取到值6.//如果含有中文,必须用encodeURI()进行编码,然后再服务器端用decodeURI()解码即可,如7.// {name:encodeURI($("#uName").val()),"password":$("#uPassword").val()},8.}, //也可以用数组传值,{"attr []",["clf","25","male"]}9.function (){10. $("#div2").text("AJAX");11.}12.);[javascript]view plaincopyprint?1.$("div").load("wrongname.xml",function(response,status,xhr){2.if (status=="success")3. {4. $("div").html("<ol></ol>");5. $(response).find("artist").each(function(){6. <span style="white-space:pre"> </span>varitem_text = $(this).text();7. <span style="white-space:pre"> </span>$('<li></li>').html(item_text).appendTo('ol');8. <span style="white-space:pre"> </span> });9. }10.else11. {12. $("div").html("Anerror occured: <br/>" + xhr.status + " " + xhr.statusText)13. }14. });getJSON()方法getJSON(url,[data],[callback])callback格式为function(data,textStatus) { }data是一个返回的json对象[javascript]view plaincopyprint?1.$.getJSON("test.js",{ name: "John", time: "2pm" }, function(json){2. alert("JSON Data: " +ers[3].name);3.});getScript()方法getScript(url,[callback])callback格式为function(response,status)response - 包含来自请求的结果数据status - 包含请求的状态("success","notmodified", "error", "timeout" 或"parsererror")通过此函数注入的脚本会自动执行get()方法get(url,data,callback(response,status,xhr),dataType)dataType可能的类型:"xml"、"html" 、"text"、"script"、"json"、"jsonp"get() 方法通过远程HTTPGET 请求载入信息。
jquery table ajax reload的用法
jquery table ajax reload的用法在现代的Web开发中,异步JavaScript和XML(AJAX)已经成为了一个不可或缺的部分,它允许我们在不重新加载整个页面的情况下,从服务器获取数据并更新页面的部分内容。
当与jQuery这样的JavaScript库结合使用时,AJAX的功能变得更加强大和易用。
在本文中,我们将详细讨论如何使用jQuery和AJAX来重新加载(reload)HTML表格的内容。
一、了解基础在开始之前,我们需要对jQuery和AJAX有一定的了解。
jQuery是一个轻量级的JavaScript库,它简化了HTML文档遍历、事件处理、动画和AJAX交互等Web开发常见任务。
AJAX则是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
二、为什么使用jQuery Table AJAX Reload在Web应用程序中,表格经常被用来展示数据。
当数据发生变化时,我们希望能够实时更新表格的内容,而不是重新加载整个页面。
这时,使用jQuery和AJAX来重新加载表格数据就变得非常有用。
它不仅可以提高用户体验,还可以减少服务器的负载。
三、基本用法假设我们有一个HTML表格,它的ID是“myTable”,并且我们有一个URL,该URL返回表格需要显示的数据。
下面是一个基本的例子,展示了如何使用jQuery和AJAX来重新加载这个表格的内容:$(document).ready(function() {// 定义一个函数来加载表格数据function loadTableData() {$.ajax({url:'your_data_url', // 数据URLtype:'GET', // 请求类型dataType:'json', // 预期服务器返回的数据类型success:function(data) {// 当请求成功时,这里会被执行// 假设data是一个包含表格数据的数组var tableBody =$("#myTable tbody"); // 获取表格的tbody元素tableBody.empty(); // 清空现有的表格内容// 遍历数据并创建表格行$.each(data, function(index, row) {var newRow =$("<tr><td>"+ row.column1+"</td><td>"+ row.column2+"</td></tr>"); tableBody.append(newRow); // 将新行添加到表格中});},error:function(jqXHR, textStatus, errorThrown) {// 当请求失败时,这里会被执行console.error("AJAX error: "+ textStatus +' - '+ errorThrown);}});}// 初始加载表格数据loadTableData();// 可以根据需要,例如定时器、按钮点击事件等,再次调用loadTableData函数来重新加载表格数据});四、进阶用法1. 使用模板引擎:当表格结构变得复杂时,手动拼接HTML字符串可能会变得非常繁琐且容易出错。
jqueryajaxthinkphp异步局部刷新完整流程
jqueryajaxthinkphp异步局部刷新完整流程环境:ThinkPHP3.2.3,jQuery3.2前⾔:在⼀般的⽹站中,都需要⽤到jquery或者其他框架(⽐如angular)来处理前后端数据交互,thinkphp在后台也内置了⼀些函数⽤于数据交互(⽐如ajaxReturn())。
本⽂的⽬的是打通使⽤ajax在jquery和thinkphp之间的前后端数据交互过程。
正⽂:⼀、thinkphp关于ajax的介绍1.1 ajaxReturn:\Think\Controller类提供了ajaxReturn⽅法⽤于AJAX返回数据给客户端(视图、模板、js等)。
并且⽀持JSON、JSONP、XML和EVAL四种⽅式给客户端接受数据(默认JSON)。
(链接:)配置⽅式:convention.php中定义了默认编码类型为DEFAULT_AJAX_RETURN => 'JSON',分析:ajaxReturn()调⽤了json_encode()将数值转换成json数据存储格式,常⽤的数值是数组。
注意:The value being encoded can be any type except a resource(资源⽂件).All string data must be UTF-8 encoded.(链接:)举例:$data['status'] = 1;$data['content'] = 'content';$this->ajaxReturn($data);1.2 请求类型:系统内置了⼀些常量⽤于判断请求类型,⽐如:常量说明IS_GET 判断是否是GET⽅式提交IS_POST 判断是否是POST⽅式提交IS_PUT 判断是否是PUT⽅式提交IS_DELETE 判断是否是DELETE⽅式提交IS_AJAX 判断是否是AJAX提交REQUEST_METHOD 当前提交类型⽬的:⼀⽅⾯可以针对请求类型作出不同的逻辑处理,另外⼀⽅⾯可以过滤不安全的请求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.jQueryAjax 编程1.1. 通过需求回顾Ajax编程1.1.1.需求:验证用户名是否有效需求:添加用户名的离焦校验html代码JS代码:<script type="text/javascript">window.onload = function(){document.getElementById("username").onblur = function() { // 获得用户名的值var username = this.value;// 判断用户名是否正确if(!username.match("^\\w{4,12}$")) {// 不满足document.getElementById("username_result").innerHTML = "<font color='red'>用户名必须是4~12位字母数字组合</forn>"return;} else {// 合法将数据上传到服务器校验// 第一步:创建对象var xmlhttp;if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp = new XMLHttpRequest();} else {// code for IE6, IE5xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}// 第二步:创建与服务器的连接xmlhttp.open("POST","${pageContext.request.contextPath}/demo1",true) ;xmlhttp.setRequestHeader("Content-type","application/x-www-form-urle ncoded");// 第三步:发送数据xmlhttp.send("username=" + username);// 第四步:成功回调函数xmlhttp.onreadystatechange = function() {if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {document.getElementById("username_result").innerHTML =xmlhttp.responseText;}}}}}</script>服务端代码:问题:如何将responseText 的json格式字符串,转换为JS对象。
eval(“(”+ responseText+”)”);1.2. jquery Ajax的开发jquery提供了6个编写ajax的方法,分成三组:第一组:$.ajax 是jquery提供最基本ajax编程方法,功能强大,代码复杂第二组:为了简化$.ajax编程,提供了load、$.get、$.post(重点)第三组: $.getScript 和$.getJSON 实现ajax的跨域请求1.2.1.$.ajax 的使用$.ajax(options) 是底层级AJAX函数的语法,功能强大语法格式:$.ajax({type: "POST GET", // http请求方式url: "请求地址",data: "name=John&location=Boston", // 发送给服务器的数据dataType:””, //预期服务器返回的数据类型。
如果不指定,jQuery 将自动根据HTTP 包MIME 信息来智能判断jsonp:callback // 解决跨域问题success: function(){...} // 成功回调函数});需求:$.ajax改写用户名离焦校验JS代码:1.2.2.load的使用Load的语法:jquery对象.load(url, param ,callback)⏹url 访问服务器地址⏹param 发送给服务器参数⏹callback 当正常返回后执行回调函数如果param存在,以POST方式请求,如果param 不存在,以GET方式请求需求:load改写用户名离焦校验,Ajax校验用户名是否合法JS代码:1.2.3.$.get和$.post的使用语法:$.get(url, param, callback, type)$.post(url, param, callback, type)⏹url 请求服务器的地址⏹param 发送给服务器参数⏹callback 服务器返回客户端执行success函数,接收data参数(服务器返回数据)⏹type 指定服务器返回数据格式,如果不指定,使用response响应contextType自动识别案例: 点击链接获取服务器端数据HTML代码:JS代码:将list对象转成xml服务器servlet代码:JS代码:$(function(){$("#showProducts").click(function(){// 向服务器索要数据语法: $.get(url, param, callback, type)$.get("${pageContext.request.contextPath}/demo2",function(data){(data);// 将data封装成table,追加到页面中var $table = $("<table border='1'><tr><td>产品名称</td><td>产品价格</td></tr></table>")$(data).find("product").each(function(){var name = $(this).children("name").text();var price = $(this).children("price").text();// 将产品信息封装到tr中var $tr = $("<tr><td>" + name + "</td><td>" + price + "</td></tr>");// 在table中追加tr$table.append($tr);});// 清空div中的内容$("#result").empty();// 在id=result的div中追加 table$("#result").append($table);});});});1.2.4.serialize 和serializeArray 方法使用问题:如何将form的数据以Ajax方式发送到服务器通过serialize 方法,将form参数转换name=value&name=value 格式html代码:<form id="myform">用户名<input type="text" name="username" /><br/>密码<input type="password" name="password" /><br/>爱好<input type="checkbox" name="hobby" value="体育" />体育<input type="checkbox" name="hobby" value="读书" />读书<input type="checkbox" name="hobby" value="音乐" />音乐<br/><input type="button" value="提交" id="mybtn" /></form>需求:将form的数据以Ajax方式发送到服务器1.2.5.综合案例:省市区三级联动html代码:// 当省变化时加载市$("#s1").change(function(){// 清空市$("#s2").empty();$("#s2").append("<option value=''>--请选择市--</option>");// 清空区县$("#s3").empty();$("#s3").append("<option value=''>--请选择区县--</option>");var code1 = $(this).val();$.post("${pageContext.request.contextPath }/demo1",{"pid":code1},fun ction(data){$(data).each(function(){//(this.cityName);var cityname = this.cityName;var codeid = this.codeid;// 将城市名称和城市id组装成optionvar $option = $("<option value='" + codeid + "'>" + cityname + "</option>");// 在省的select后面追加option$("#s2").append($option);});});});// 当市变化时加载区县$("#s2").change(function(){// 清空区县$("#s3").empty();$("#s3").append("<option value=''>--请选择区县--</option>");var code1 = $(this).val();$.post("${pageContext.request.contextPath }/demo1",{"pid":code1},fun ction(data){$(data).each(function(){//(this.cityName);var cityname = this.cityName;var codeid = this.codeid;// 将城市名称和城市id组装成optionvar $option = $("<option value='" + codeid + "'>" + cityname + "</option>");// 在区县的select后面追加option$("#s3").append($option);});});});优化以后的代码:$(function(){// 初始化省loadArea(0,"s1");// 当省变化时加载市$("#s1").change(function(){// 清空市$("#s2").empty();$("#s2").append("<option value=''>--请选择市--</option>");// 清空区县$("#s3").empty();$("#s3").append("<option value=''>--请选择区县--</option>");var code1 = $(this).val();loadArea(code1,"s2");});// 当市变化时加载区县$("#s2").change(function(){// 清空区县$("#s3").empty();$("#s3").append("<option value=''>--请选择区县--</option>");var code1 = $(this).val();loadArea(code1,"s3");});});function loadArea(pid, sid) {$.post("${pageContext.request.contextPath }/demo1",{"pid":pid},funct ion(data){$(data).each(function(){//(this.cityName);var cityname = this.cityName;var codeid = this.codeid;// 将城市名称和城市id组装成optionvar $option = $("<option value='"+ codeid + "'>"+ cityname + "</option>");// 在省的select后面追加option$("#" + sid).append($option);});});}练习:1、重点练习AjaxAJAX 用法Load 用法GET 解析JSON案例POST 解析XML 案例2、DOM 练习全选、select移动3、区分事件绑定和事件委派区别4、事件默认动作阻止和事件传播阻止。