一、Ajax介绍:
- Ajax是在网络浏览器(客户端)和服务器之间传送或接受数据的技术。
- Ajax结合了Java技术、XML以及JavaScript等编程技术,它实际上是几种技术,合在一起组成的一个功能强大的新技术。?
- Ajax可以通过异步的方式,向后端服务器发送请求、响应返回结果,对页面内容进行部分的更新,而不再需要每次由用户通过改变链接地址,对整个页面进行更新。
二、Ajax好处:
??? 传统的网络应用程序会将输入的信息提交给服务器(使用HTML表单),在服务器通过代码后,将会把一个全新的完整的页面传送给用户,由于用户每次提交输入信息的时候服务器都将传回一个新的页面,传统的网络应用程序通常运行缓慢且使用不便,使用AJAX,整个网页就可以于服务器之间局部的发送或者接收数据。
三、同步、异步:
- 同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事。
- 异步: 请求通过事件触发->服务器处理(这时候浏览器仍然可以作其他事情)->处理完毕。
- 举个例子:
- 同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。
- 异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。
- 打电话是同步 发消息是异步。
四、XMLHttpRequest对象:
- ?XMLHttp:是一套可以在javascript、vbscript、jscript等脚本语言中通过http协议传送或者接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不需要刷新整个页面。
- ?XMLHttpRequest是XMLHttp组建的对象。
- Ajax的无刷新更新页面这一特点主要得益于XMLHttp组建的XMLHttpRequest对象,这样就可以像桌面应用程序一样只同服务器进行数据层面的交换,而不用每次都整个刷新界面,带来不必要的数据处理。
五、实例:
??? 1、传统方式客端与服务器传输数据:
?
??? myHtml.jsp
<%@ page contentType="text/html; charset=utf-8" language="java" %> <%@page import="java.net.URLDecoder"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; String message=""; if(request.getParameter("message")!=null && !request.getParameter("message").equals("")) { message=new String(request.getParameter("message").getBytes("ISO-8859-1"),"utf8"); } %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>公众AJAX教程-1</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script type ="text/javascript" language ="javascript" > function sendRequest(url) { form1.action=url; form1.submit(); } </script> </head> <body> <form name="form1" id="form1" method="get" action=""> <dir> <%=message %> </dir> <input id="button1" type="button" value="获取数据" onclick ="sendRequest('htmlServer.jsp')"/> </form> </body> </html>
?
?? htmlServer.jsp?
<%@ page contentType="text/html; charset=utf-8" language="java" %> <%@page import="java.net.URLEncoder"%> <% //response.sendRedirect("myHtml.jsp?message=html调用成功");这种方式传递中文会出现乱码 response.sendRedirect("myHtml.jsp?message="+URLEncoder.encode("html调用成功","utf8")); %>
??? 2、Ajax方式客端与服务器传输数据:
???
??? myAjax.jsp
<%@ page contentType="text/html; charset=utf-8" language="java"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>公众AJAX教程-1</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script type ="text/javascript" language ="javascript" > var XMLHttpReq=false; //定义变量,用来创建xmlhttprequest对象 function creatXMLHttpRequest() // 创建xmlhttprequest { if(window.XMLHttpRequest) //非IE浏览器及IE7(7.0及以上版本),用xmlhttprequest对象创建 { XMLHttpReq=new XMLHttpRequest(); } else if(window.ActiveXObject) //IE(6.0及以下版本)浏览器用activexobject对象创建,如果用户浏览器禁用了ActiveX,可能会失败. { try { XMLHttpReq=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { XMLHttpReq=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} } } } function sendRequest(url) // 发送请求函数 { creatXMLHttpRequest(); if(XMLHttpReq) //成功创建xmlhttprequest { XMLHttpReq.open("post",url,true); //与服务端建立连接(请求方式post或get,地址,true表示异步) XMLHttpReq.onreadystatechange = callback; //指定回调函数 XMLHttpReq.send(null); //发送请求 } } function callback() //回调函数,对服务端的响应处理,监视response状态 { if(XMLHttpReq.readystate==4) //请求状态为4表示成功 { if(XMLHttpReq.status==200) //http状态200表示OK { Dispaly(); //所有状态成功,执行此函数,显示数据 } else //http返回状态失败 { alert("服务端返回状态" + XMLHttpReq.statusText); } } else //请求状态还没有成功,页面等待 { document .getElementById ("div1").innerHTML ="数据加载中"; } } function Dispaly() //接受服务端返回的数据,对其进行显示 { document .getElementById ("div1").innerHTML =XMLHttpReq.responseText; } </script> </head> <body> <div id="div1"></div> <input id="button1" type="button" value="获取数据" onclick ="sendRequest('ajaxServer.jsp')"/> </body> </html>
?
?? ajaxServer.jsp
<%@ page contentType="text/html; charset=utf-8" language="java"%> <% out.write("AJAX调用成功"); %>
?
??? 3、传统ajax方式-用户登录实例:
?
??? login.jsp
<%@ page contentType="text/html; charset=utf-8" language="java"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>公众AJAX教程-2</title> <style type="text/css"> <style type="text/css"> <!-- body { margin: 0px; padding:0px; background:#494051 url(<%=path%>/lesson_2/images/jifenbg.jpg) repeat-x; font-size:12px; } .jifendlroot { width: 488px; margin-top: 310px; margin-right: auto; margin-left: auto; } .jifendl01 { background: url(<%=path%>/lesson_2/images/jifen02.jpg); height:181px; padding-left:176px; } .jifendl02 { margin-top: 20px; } .jifendl02left { float: left; width: 50px; padding-top:4px; } .input01 { width:149px; height:21px; border:1px solid #A8ACAB; } .jifendl02right { float: left; width:153px; } .clear { clear:both; } .jifendl03 { text-align: right; width: 270px; margin-top:20px; } --> </style> <script type ="text/javascript" language ="javascript" > var XMLHttpReq=false; //定义变量,用来创建xmlhttprequest对象 function creatXMLHttpRequest() // 创建xmlhttprequest { if(window.XMLHttpRequest) //非IE浏览器及IE7(7.0及以上版本),用xmlhttprequest对象创建 { XMLHttpReq=new XMLHttpRequest(); } else if(window.ActiveXObject) //IE(6.0及以下版本)浏览器用activexobject对象创建,如果用户浏览器禁用了ActiveX,可能会失败. { try { XMLHttpReq=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { XMLHttpReq=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} } } } function checkdata() // 发送请求函数 { var userName=document.getElementById("userName");//用户名 var password=document.getElementById("password");//密码 if (userName.value.length==0) { alert('用户名不能为空!'); userName.focus(); return false; } if (password.value.length==0) { alert('密码为空!'); password.focus(); return false; } var url="loginAjax.jsp?userName="+userName.value+"&password="+password.value; creatXMLHttpRequest(); if(XMLHttpReq) //成功创建xmlhttprequest { XMLHttpReq.open("post",url,true); //与服务端建立连接(请求方式post或get,地址,true表示异步) XMLHttpReq.onreadystatechange = callback; //指定回调函数 XMLHttpReq.send(null); //发送请求 } } function callback() //回调函数,对服务端的响应处理,监视response状态 { if(XMLHttpReq.readystate==4) //请求状态为4表示成功 { if(XMLHttpReq.status==200) //http状态200表示OK { var flag=XMLHttpReq.responseText; if(flag.replace(/^\s*|\s*$/g, '')=="OK") { form1.submit(); } if(flag.replace(/^\s*|\s*$/g, '')=="NO") { alert("用户名不存在或密码不正确"); } } else //http返回状态失败 { alert("服务端返回状态" + XMLHttpReq.statusText); } } } </script> </head> <body> <form name="form1" method="post" action="loginOK.jsp"> <div class="jifendlroot" > <div> <img src="<%=path%>/lesson_2/images/jifen01.jpg" width="488" height="74" /> </div> <div class="jifendl01"> <div class="jifendl02"> <div class="jifendl02left"> <img src="<%=path%>/lesson_2/images/jifen03.jpg" width="42" height="16" /> </div> <div class="jifendl02right"> <input name="userName" id="userName" type="text" class="input01" /> </div> <div class="clear"></div> </div> <div class="jifendl02"> <div class="jifendl02left"> <img src="<%=path%>/lesson_2/images/jifen04.jpg" width="42" height="16" /> </div> <div class="jifendl02right"> <input name="password" id="password" type="password" class="input01" /> </div> <div class="clear"></div> </div> <div class="jifendl03"> <INPUT type="button" value="登陆" name="button1" id="button1" onclick="checkdata()" /> <!-- 错误的方式 <INPUT type=image src="<%=path%>/lesson_2/images/jifen05.jpg" width="105" height="36" border=0 name=imageField onclick="checkdata(this);"/> --> </div> </div> </div> </form> </body> </html>
??
?? loginAjax.jsp
<%@ page contentType="text/html; charset=utf-8" language="java"%> <% if(request.getParameter("userName").equals("apple")&&request.getParameter("password").equals("apple")) { out.write("OK"); } else { out.write("NO"); } %>
?
?? loginOK.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'loginOK.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 欢迎使用无任何内容管理系统!^_^ <br> </body> </html>
??
?? 4、jquery方式-用户注册实例(这里运用了jquery验证框架):
?
??? register.jsp
<%@ page contentType="text/html; charset=utf-8" language="java"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/"; %> <!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>公众AJAX教程-3:用户登录/注册</title> <link href="<%=path%>/lesson_3/css/css.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="<%=path%>/lesson_3/js/jquery-1.4.2.js" charset="UTF-8"></script> <script type="text/javascript" src="<%=path%>/lesson_3/js/formValidator.js" charset="UTF-8"></script> <script type="text/javascript" src="<%=path%>/lesson_3/js/formValidatorRegex.js" charset="UTF-8"></script> <link type="text/css" rel="stylesheet" href="<%=path%>/lesson_3/css/validator.css"></link> <script type="text/javascript"> $(document).ready(function(){ $.formValidator.initConfig({formid:"form1",onerror:function(msg){alert(msg)},onsuccess:function(){return true;}}); //$("#userName").formValidator({onshow:"请输入用户名",onfocus:"用户名至少1个字符,最多10个字符",oncorrect:"该用户名可以注册"}).inputValidator({min:1,max:10,onerror:"你输入的用户名非法,请确认"}).regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"}) //.ajaxValidator({ // type : "get", // url : "registerAjax.jsp", //datatype : "text", //success : function(result){ // if( result.replace(/^\s*|\s*$/g, '') == "notexsits" ) // { // return true; // } // else // { // return false; // } //}, //buttons: $("#button"), //error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");}, //onerror : "该用户名不可用,请更换用户名", //onwait : "正在对用户名进行合法性校验,请稍候..." //}); //密码验证 $("#password1").formValidator({onshow:"请输入密码",onfocus:"密码不能为空",oncorrect:"密码合法"}).inputValidator({min:1,empty:{leftempty:false,rightempty:false,emptyerror:"密码两边不能有空符号"},onerror:"密码不能为空,请确认"}); $("#password2").formValidator({onshow:"请输入重复密码",onfocus:"两次密码必须一致",oncorrect:"密码一致"}).inputValidator({min:1,empty:{leftempty:false,rightempty:false,emptyerror:"重复密码两边不能有空符号"},onerror:"重复密码不能为空,请确认"}).compareValidator({desid:"password1",operateor:"=",onerror:"2次密码不一致,请确认"}); //电子邮件验证 $("#email").formValidator({onshow:"请输入邮箱",onfocus:"邮箱输入正确了才能离开焦点",oncorrect:"邮箱正确",defaultvalue:"@",forcevalid:true}).inputValidator({min:1,max:100,onerror:"你输入的邮箱长度非法,请确认"}).regexValidator({regexp:"^([\\w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([\\w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$",onerror:"你输入的邮箱格式不正确"}); }) function isUserName() { $.get ( 'registerAjax.jsp', { userName: $('#userName').val()//参数一 }, function(result) //回调函数 { var flag=result; if(result.replace(/^\s*|\s*$/g, '')=="exsits") { //输出结果 $("#userName").val(''); $("#userNameTip").text('此用户已被使用!'); return false; } if(result.replace(/^\s*|\s*$/g, '')=="notexsits") { if( $("#userName").val()=="") { $("#userNameTip").text('请输入用户名'); } else { $("#userNameTip").text('此用户已可以使用'); } return true; } }, "text" //返回类型 ); } </script> </head> <body> <form name="form1" id="form1" action="registerOK.jsp" method="post"> <div class="main"> <!--hearder--> <div> <iframe id="copyright1" name="copyright1" marginwidth="0" marginheight="0" src="top.jsp" frameborder="0" width="965" scrolling="no" height="113" target="contents"></iframe> </div> <!--main--> <div class="login_right"> <div class="f login_right_1"> <span class="f login_right_2">注册</span><span class="f login_right_3">您是新用户? 请您注册</span> <div class="clear"></div> </div> <div class="login_right_4 f"> <table width="800" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="140"> </td> <td width="610"> </td> </tr> <tr> <td height="35" align="right"> 用户类型: </td> <td> <input type="radio" name="radiobutton" value="radiobutton" /> 个人用户 <input type="radio" name="radiobutton" value="radiobutton" /> 企业用户 <input type="radio" name="radiobutton" value="radiobutton" /> 校园用户 </td> </tr> <tr> <td height="35" align="right"> 用户名: </td> <td> <!-- <input name="userName" id="userName" type="text" class="bor_1" /> <span id="userNameTip">请输入用户名</span> --> <input name="userName" id="userName" onchange="isUserName()" type="text" class="bor_1" /> <span id="userNameTip">请输入用户名</span> </td> </tr> <tr> <td align="right"> </td> <td> </td> </tr> <tr> <td height="35" align="right"> 输入密码: </td> <td> <input name="password1" id="password1" type="password" class="bor_1" /> <span id="password1Tip"></span> </td> </tr> <tr> <td align="right"> </td> <td> </td> </tr> <tr> <td height="35" align="right"> 再次输入密码: </td> <td> <input name="password2" id="password2" type="password" class="bor_1" /> <span id="password2Tip"></span> </td> </tr> <tr> <td align="right"> </td> <td> </td> </tr> <tr> <td height="35" align="right"> 邮箱: </td> <td> <input name="email" id="email" type="text" class="bor_1" /> <span id="emailTip"></span> </td> </tr> <tr> <td align="right"> </td> <td> </td> </tr> <tr> <td height="35" align="right"> 验证码: </td> <td> <input name="textfield424" type="text" class="bor_1" /> </td> </tr> <tr> <td> </td> <td> <img src="<%=path%>/lesson_3/images/index_28.gif" width="180" height="40" /> </td> </tr> <tr> <td height="45"> </td> <td> <label> <input type="checkbox" name="checkbox3" value="checkbox" /> </label> 我以同意 </td> </tr> <tr> <td> </td> <td> <INPUT type=image src="<%=path%>/lesson_3/images/index_31.gif"/> </td> </tr> </table> </div> <div class="login_right_5 f"> <img src="<%=path%>/lesson_3/images/index_34.gif" /> </div> <div class="clear"></div> </div> <div class="clear"></div> <!--bottom--> <div> <iframe id="copyright1" name="copyright1" marginwidth="0" marginheight="0" src="bottom.jsp" frameborder="0" width="965" scrolling="no" height="55" target="contents"></iframe> </div> <div class="clear"></div> </div> </form> </body> </html>
??
?? registerAjax.jsp
<%@ page contentType="text/html; charset=utf-8" language="java"%> <% if(request.getParameter("userName").equals("apple")) { out.write("exsits"); } else { out.write("notexsits"); } %>
?
?? registerOK.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'loginOK.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 欢迎使用无任何内容管理系统!^_^ <br> </body> </html>
?
?? bottom.jsp
<%@ page contentType="text/html; charset=utf-8" language="java"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>bottom页</title> <link href="<%=path%>/lesson_3/css/boxes.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="main"> <DIV class=wrapper> <DIV class=footer-container> <DIV class=footer> <UL class=one> <LI> <A href="http://www.wodehaoma.com/about-us">关于我们</A> </LI> <LI> <A href="http://www.wodehaoma.com/contacts">联系我们</A> </LI> <LI> <A href="http://www.wodehaoma.com/friendly-link">友情链接</A> </LI> <LI> <A href="http://www.wodehaoma.com/catalog/seo_sitemap/category">网站地图</A> </LI> <LI class=last> <A href="http://www.wodehaoma.com/contacts">投诉与建议</A> </LI> </UL> <DIV class=copyright> 黑龙江公众数码网络有限公司 版权所有 <A href="http://www.miibeian.gov.cn/" target=_blank>黑B2-20080993</A> 客服热线:0451-53604732 </DIV> </DIV> <div align="center"> <IMG src="<%=path%>/lesson_3/images/tongji.gif" width="50" height="11"> </div> <div class="clear"></div> </div> </body> </html>
?
? ?top.jsp
<%@ page contentType="text/html; charset=utf-8" language="java"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!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> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>top页</title> <link href="<%=path%>/lesson_3/css/css.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="main"> <!--hearder--> <div> <div class="logo"><img src="<%=path%>/lesson_3/images/logo.gif" /></div> <div class="nav"> <div class="nav_1"><ul><li>欢迎您访问我的号码网!</li> <li>登录 | 注册 | <a href="#">我的帐户</a> | 帮助</li> </ul></div> <div> <div class="nav_2"><img src="<%=path%>/lesson_3/images/an-1.gif" /></div> <div class="nav_2"><img src="<%=path%>/lesson_3/images/an-2.gif" /></div> <div class="nav_2"><img src="<%=path%>/lesson_3/images/an-3.gif" /></div> <div class="nav_3">订购热线:0451-5360-4732</div> <div class="clear"></div> </div> </div> <div class="clear"></div> </div> <div> <div class="left"> <div class="m_b_1 left_1"><img src="<%=path%>/lesson_3/images/index_25.gif" width="220" height="40" /></div> </div> <div class="right_sid"> <div class="right_sid_1 m_b_5"> <table width="740" height="40" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="16"> </td> <td width="53">搜 索:</td> <td width="402"><select name="select"> </select> <input name="textfield" type="text" class="b_1" /></td> <td width="66"><img src="<%=path%>/lesson_3/images/btn_mini_search.gif" width="20" height="20" /></td> <td width="98" class="c_6">购物车</td> <td width="105" class="c_6">我的订单</td> </tr> </table> </div> </div> <div class="clear"></div> </div> <!--main--> <div> <!--left--> <!--right--> <div class="clear"></div> </div> <!--bottom--> <div class="clear"></div> </div> </body> </html>
?五、jquery-ajax常用方法说明:
1、?jQuery.get( url, [data], [callback] ):使用GET方式来进行异步请求:
??? 参数:
- ????url (String) :? 发送请求的URL地址.
- ?? ?data (Map) : (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示,会做为QueryString附加到请求URL中。
- ??? callback (Function) : (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。?
- ??? 返回的 data 可以是 xmlDoc, jsonObj, html, text, 等等。
?2、jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求(同上)