ajax(javaScript 和 jquery )

前端之家收集整理的这篇文章主要介绍了ajax(javaScript 和 jquery )前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
JQuery、AJAX与Javascript之间的父子关系

JQuery、AJAX都是Javascript的一个框架,各有各自不同的功能,如果把Javascript比作父亲的话,JQuery和AJAX就是Javascript的亲生儿子。JQuery是轻量级的js库,它兼容CSS3,还兼容各种浏览器 (IE 6.0+,FF1.5+,Safari 2.0+,Opera 9.0+)。jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。jQuery同时还有许多成熟的插件可供选择。jQuery能够使用户的html页保持代码和html内容分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可。

jquery
JQuery的宗旨是——WRITE LESS,DO MORE,也就是“吃得少,干的多”。让我们广大的程序员能够写更少的代码,做更多的事情。
而JQuery在什么时候使用呢?和上边说的类似,它主要的用处就是:
1. 选择器,通过$符号可以快速、精确的定位到指定的元素。选择器包括:基本选择器、层次选择器、过滤选择器、表单选择器
2. 对DOM操作,通过$符号找到DOM元素,对属性进行操作;添加删除节点;对样式进行操作;设置获取HTML文本和值;遍历子元素或同辈元素;添加事件
3. 表单验证
4. 动画效果
5. ajax
ajax
下面来讲讲ajax,AJAX即“AsynchronousJavaScript and XML”(异步JavaScript和XML)。所谓的异步就是在事件触发之后浏览器任然可以做其他的事情,与发生事件的控件无关的控件不受影响。AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。 要搞清的概念:观点一: Ajax 和服务器端技术毫不相关。 ajax 完完全全就是前端技术,所做的无非就是异步的发送一个请求然后得到一个响应,事实上,不论何种 Ajax 技术,服务器端都是返回的一个纯文本流,再由客户端来处理这个文本。这段文本可以是 xml 格式,也可以是一个 Html 片段,也可以是一段 JavaScript 脚本,或者仅是一个字符串。服务器端仅仅是作为一个数据接口,客户端使用 XMLHttpRequest 对象来请求这个页面,客户端在异步获取结果后,不是直接显示页面,而是由客户端的 Javascript 脚本处理后再显示页面。至于各种控件所谓的能返回 DataSet 对象, Date 对象,或者其他的数据类型,都是封装了这个处理过程的结果。AJAX是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。那一般什么时候使用AJAX,什么时候使用AJAX比较合适呢?一般都是用在页面局部发生变化的地方。如下:
1. 基于表单的交互
2. 深层树状导航
3. 实时用户用户通讯
4. 投票、是否选择、等级评价
5. 过滤和复杂数据操作
6. 普通录入时的提示/自动补齐
不适用使用AJAX的场合:
1. 简单的表单
2. 搜索
3. 基本导航
4. 替换大量的信息
5. 显示操作
6. 无用的网页小部件

demo
下面是自己做的一个很简单的web项目,首先是一个注册页面(register.jsp),注册form提交之后跳转到详情页面(detail.jsp),common.jsp是所有页面都会用到的一些基本设置,然后被include到其它页面中,便于管理。最后在详情页面进行各种ajax请求,demo下载地址: http://download.csdn.net/detail/u012049463/6472103
该demo很详细的讲解了jquery的几种ajax请求。顺便推荐两个学习ajax的地址:
http://www.cnblogs.com/qleelulu/archive/2008/04/21/1163021.html
http://www.w3school.com.cn/jquery/jquery_ajax_intro.asp

具体如下所示:

项目目录结构和页面结果展示如下(js ajax暂未实现,后续更新):


在点击左边jquery ajax请求时注意观察详情页面的userId和name处的变化,如下是详情页面的js写法和注释,注释都比较清楚了,所以不再过多说明


  1. <prename="code"class="html"><%@pagelanguage="java"contentType="text/html;charset=utf-8"
  2. pageEncoding="utf-8"%>
  3. <jsp:includepage="common.jsp"></jsp:include>
  4. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <Metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
  8. <title>user1detailinfo</title>
  9. <styletype="text/css">
  10. .left{
  11. text-align:right;
  12. background-color:green;
  13. width:100px;
  14. margin:1px;
  15. }
  16. .right{
  17. text-align:left;
  18. background-color:yellow;
  19. margin:1px;
  20. width:200px;
  21. }
  22. </style>
  23. <scripttype="text/javascript">
  24. /**
  25. ajaxPostMethod(),通过jquery的ajax()方法发送post请求
  26. ajaxGetMethod(),通过jquery的ajax()方法发送get请求
  27. loadMethod(),对jquery的ajax()方法的一种封装,也是发送的post请求,用起来更加方便简洁,且具有特别的功效,就是请求成功时,将返回的值会替换发送请求的标签的值
  28. postMethod(),作用跟ajaxPostMethod()的功效一样
  29. getMethod(),发送的get请求,作用跟ajaxGetMethod()的功效一样
  30. */
  31. /**
  32. *定义和用法:ajax()方法通过HTTP请求加载远程数据。
  33. 方法是jQuery底层AJAX实现。简单易用的高层实现见$.get,$.post等。
  34. $.ajax()返回其创建的XMLHttpRequest对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。
  35. 最简单的情况下,$.ajax()可以不带任何参数直接使用。注意:所有的选项都可以通过$.ajaxSetup()函数来全局设置。
  36. 语法:jQuery.ajax([settings])
  37. 参数描述:settings可选。用于配置Ajax请求的键值对集合。可以通过$.ajaxSetup()设置任何选项的默认值。
  38. 对于ajax里面的settings其实有很多参数可以进行灵活的选择,参数实在太多了,下面的代码只列举了一些非常常用的属性,对于其他的参数可以参照这个地址:http://www.w3school.com.cn/jquery/ajax_ajax.asp
  39. */
  40. functionajaxPostMethod(){
  41. $.ajax({
  42. type:'post',
  43. url:'/ajax_test/managerInfo',
  44. data:{
  45. managerId:'ajaxPostMethod_789',
  46. managerName:'ajaxPostMethod_yuwenjie'
  47. },
  48. cache:false,//是否设置缓存
  49. //设置预期返回值的类型为json类型,有很多时候会进入error条件就是返回值转化为预期类型出错导致的
  50. //dataType:'json',
  51. success:function(resultdata,textStatus,XMLHttpRequest){//响应成功时执行的函数
  52. $("#name").text("managerName:");
  53. $("#nameVal").text(resultdata);
  54. },
  55. error:function(resdata,XMLHttpRequest){//响应失败时执行的函数
  56. alert("fail");
  57. $("#name").text("managerName:");
  58. $("#nameVal").text(resdata);
  59. }
  60. });
  61. }
  62. functionajaxGetMethod(){
  63. $.ajax({//ajax默认请求方式就是‘get',不过写的时候最好还是写下,怕自己不记得
  64. type:'get',
  65. url:"/ajax_test/managerInfo",
  66. data:{
  67. "managerId":"ajaxGetMethod_45456",
  68. "managerName":"ajaxGetMethod_unj"
  69. },
  70. success:function(response,status,xhr){
  71. $("#name").text("managerName:");
  72. $("#nameVal").text(response);
  73. },
  74. error:function(response,xhr){
  75. alert("出错啦");
  76. }
  77. });
  78. }
  79. /*
  80. 定义和用法
  81. load()方法通过AJAX请求从服务器加载数据,并把返回的数据放置到指定的元素中。
  82. 注释:还存在一个名为load的jQuery事件方法调用哪个,取决于参数。js也有个load()方法,该方法用于页面加载完成之后调用
  83. 语法:load(url,data,function(response,xhr))
  84. 解释:
  85. url,规定要将请求发送到哪个URL.
  86. data,可选。规定连同请求发送到服务器的数据。
  87. function(response,xhr),可选。规定当请求完成时运行的函数。不管成功还是失败,都会执行的回调函数,如果请求成功,就会将发送请求的标签的值替换为返回值
  88. 额外的参数:
  89. response-包含来自请求的结果数据
  90. status-包含请求的状态("success","notmodified","error","timeout"或"parsererror")
  91. xhr-包含XMLHttpRequest对象
  92. */
  93. //jquery的load方法也是以post方式请求的,请求返回的值会替换id为userIdVal的值,这一点特别值得提醒,因为之前我就没发现
  94. functionloadMethod(){
  95. $("#userIdVal").load("/ajax_test/managerInfosss",{
  96. "managerId":"loadMethod_45456",
  97. "managerName":"loadMethod_unj"
  98. },xhr){
  99. //$("#name").text("managerName:");
  100. //$("#nameVal").text(response);
  101. alert('iiiii');
  102. });
  103. }
  104. /*
  105. 定义和用法
  106. post()方法通过HTTPPOST请求从服务器载入数据。
  107. 语法:jQuery.post(url,success(data,jqXHR),dataType)
  108. 参数描述:url必需。规定把请求发送到哪个URL。
  109. data可选。映射或字符串值。规定连同请求发送到服务器的数据。
  110. success(data,jqXHR)可选。请求成功时执行的回调函数
  111. dataType可选。规定预期的服务器响应的数据类型。默认执行智能判断(xml、json、script或html)。
  112. 其实该函数是简写的Ajax函数,等价于:
  113. $.ajax({
  114. type:'POST',
  115. url:url,
  116. data:data,
  117. success:success,
  118. dataType:dataType
  119. });
  120. */
  121. functionpostMethod(){
  122. $.post("/ajax_test/managerInfo",{
  123. "managerId":"postMethod_45456",
  124. "managerName":"postMethod_unj"
  125. },function(data,jqXHR){//只有在返回成功时才会执行该function
  126. alert('成功');
  127. $("#name").text("managerName:");
  128. $("#nameVal").text(data);
  129. });
  130. }
  131. /*
  132. 定义和用法
  133. get()方法通过远程HTTPGET请求载入信息。这是一个简单的GET请求功能以取代复杂$.ajax。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用$.ajax。
  134. 语法:$(selector).get(url,success(response,dataType)
  135. 参数描述:
  136. url必需。规定将请求发送的哪个URL。
  137. data可选。规定连同请求发送到服务器的数据。
  138. success(response,xhr)可选。规定当请求成功时运行的函数
  139. dataType可选。规定预计的服务器响应的数据类型。
  140. 额外的参数:
  141. response-包含来自请求的结果数据
  142. status-包含请求的状态
  143. xhr-包含XMLHttpRequest对象
  144. 其实该函数是简写的Ajax函数,等价于:
  145. $.ajax({
  146. type:'get',
  147. dataType:dataType
  148. });
  149. */
  150. functiongetMethod(){
  151. $.get("/ajax_test/managerInfo",xhr){//只有在返回成功时才会执行该function
  152. $("#name").text("managerName:");
  153. $("#nameVal").text(response);
  154. });
  155. }
  156. /**
  157. ajax提交表单
  158. */
  159. functionajaxForm(){
  160. varformParam=$("#myForm").serialize();//序列化表格内容为字符串
  161. $.ajax({
  162. type:'post',
  163. url:'/ajax_test/formServlet',
  164. data:formParam,
  165. async:true,
  166. cache:false,
  167. dataType:'json',
  168. success:function(data){
  169. alert('ok');
  170. alert(data);
  171. },
  172. error:function(data){
  173. alert('error');
  174. $("#userInfosss").text('2');
  175. $("#userInfosss").html('2');
  176. $("#userInfosss").val('2');
  177. alert(data);
  178. }
  179. });
  180. }
  181. </script>
  182. </head>
  183. <body>
  184. <h1>详情页面</h1>
  185. <div
  186. style="border:1pxsolidblack;width:350px;height:150px;margin:5px;">
  187. <spanclass="left"id="userId">userId:</span><spanclass="right"
  188. id="userIdVal">${sessionScope.user1.userId}</span><br><span
  189. class="left"id="name">name:</span><spanclass="right"id="nameVal">
  190. ${sessionScope.user1.name}</span><br><spanclass="left">age:</span><span
  191. class="right">${sessionScope.user1.age}</span><br><span
  192. class="left">address:</span><spanclass="right">${sessionScope.user1.address
  193. }</span><br><spanclass="left">birthday:</span><spanclass="right">
  194. ${sessionScope.user1.birthday}</span><br>
  195. </div>
  196. <hr>
  197. <div
  198. style="border:1pxsolidgreen;width:300px;height:400px;float:left;margin:5px;">
  199. <h1style="color:blue">jqueryajax请求</h1>
  200. <h2>post请求</h2>
  201. <ul>
  202. <li><buttononclick="loadMethod();">load方法</button></li>
  203. <li><buttononclick="postMethod();">post方法</button></li>
  204. <li><buttononclick="ajaxPostMethod();">ajax方法</button></li>
  205. </ul>
  206. <h2>get请求</h2>
  207. <ul>
  208. <li><buttononclick="getMethod();">get方法</button></li>
  209. <li><buttononclick="ajaxGetMethod();">ajax方法</button></li>
  210. </ul>
  211. </div>
  212. <div
  213. style="border:1pxdottedred;width:300px;height:400px;float:left;margin:5px;">
  214. <h1style="color:blue">jsajax请求</h1>
  215. <h2>post请求</h2>
  216. <ul>
  217. <li><buttononclick="javascript:void(0);">load方法</button></li>
  218. <li><buttononclick="javascript:void(0);">post方法</button></li>
  219. <li><buttononclick="javascript:void(0);">ajax方法</button></li>
  220. </ul>
  221. <h2>get请求</h2>
  222. <ul>
  223. <li><buttononclick="javascript:void(0);">get方法</button></li>
  224. <li><buttononclick="javascript:void(0);">ajax方法</button></li>
  225. </ul>
  226. </div>
  227. <div>
  228. <h1>form请求</h1>
  229. <formid="myForm"method="post">
  230. <span>userName:</span><span><inputtype="text"
  231. name="userName"value="真的很沉默">
  232. </span><br><span>age:</span><span><inputtype="text"
  233. name="age"value="21">
  234. </span><br><span>address:</span><span><inputtype="text"
  235. name="address"value="gNroad">
  236. </span><br><span>birthday:</span><span><inputtype="text"
  237. name="birthday"value="19920126">
  238. </span><br>
  239. <span><inputtype="submit"value="跳转注册"></span>
  240. <span><buttononclick="ajaxForm();">ajax注册</button></span>
  241. </form>
  242. </div>
  243. <divid="userInfosss">fds</div>
  244. </body>
  245. </html></pre><br>
  246. <br>
  247. <pre></pre>
  248. <pre></pre>
  249. <pre></pre>

猜你在找的Ajax相关文章