ajax(javaScript 和 jquery )

来源:互联网 发布:淘宝店发货地址不能改 编辑:程序博客网 时间:2024/04/30 03:56
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写法和注释,注释都比较清楚了,所以不再过多说明


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