• jquery对ajax编程的支持


    jquery对ajax编程的支持
     1、序列化元素:
     serialize():将jquery对象包含的
     表单或者表单控件转换成查询字符串
     serializeArray():转换为一个数组,每个数组元素形如{name:fieldName,value:fieldVal}的对象。
     序列化元素的作用,主要是用于ajax请求中,给data赋值。
     
     2、三个方法
      1)load(url,[data]): 将服务器返回的数据直接插入到符合
      要求的节点之上。
       url: 服务器上的组件的地址
       data:发送给服务器的请求参数:
        string: "username=zs&&age=22"
        object: {"username":"zs","age",22}
       
       2)$.get(url,[data],[callback],[type]):其中,callback格式 function(data,statusText)
         url: 服务器上的组件的地址
         data:发送给服务器的请求参数:
        string: "username=zs&&age=22"
        object: {"username":"zs","age",22}
       callback: 回调函数,包含两个参数,第一个参数
       是服务器返回的数据,第二个参数是状态。
       type:服务器返回的数据类型
         text: 文本内容
         json: json字符串
         xml: xml文档
         script: javascript脚本
         html: html内容
        $.post()格式同上。
      3)$.ajax(options):options是一个形如
      {key1:value1,key2:value2...}的js对象,用于指定
      发送请求的选项。
      选项参数如下:
      url(string):请求地址
      type(string):GET/POST
      data(object/string):发送到服务器的数据
      (这儿可以使用serialize()或者serializeArray()方法)
      dataType(string) :预期服务器返回的数据类型
         text: 文本内容
         json: json字符串
         xml: xml文档
         script: javascript脚本
         html: html内容
      success(function):请求成功后调用的回调函数,
      有两个参数:
           function(data,textStatus),其中,
           data是服务器返回的数据,可以是html,text,jsonObj,xmlDoc
           textStatus 描述状态的字符串。
      error(function):请求失败时调用的函数,
      有三个参数:
       function(xhr,textStatus,errorThrown)
       xhr: 底层的XmlHttpRequest对象
       textStauts:错误状态
       errorThrown:错误状态
      async: true(默认值)/false,当值为true时,发送
      异步请求,当值为false时,发送同步请求。
      
      
    例子1:
    stock.jsp

    <%@page pageEncoding="utf-8" 
    contentType="text/html;charset=utf-8" %>
    <html>
     <head>
      <style>
       #d1{
        width:500px;
        height:300px;
        border:1px solid red;
        background-color:#fff8dc;
        margin:30px auto;
       }
      </style>
      <script type="text/javascript" src="js/jquery-1.4.3.js">
      </script>
      <script type="text/javascript">
       function quoto(){
        $('tbody').html('');
        $.post('quoto.do',function(data){
         //data:服务器返回的数据,
         //如果返回的数据是json字符串,会自动
         //转换成javascript对象或者javascript对象
         //组成的数组
         for(i=0;i<data.length;i++){
          $('tbody').append(
          '<tr><td>' 
          + data[i].stockNo 
          + '</td><td>' + data[i].stockName 
          + '</td><td>' + data[i].price 
          + '</td></tr>');
         }
        },'json');
       }
       $(function(){
        setInterval(quoto,1000);
       });
      </script>
     </head>
     <body style="font-size:30px;">
      <div id="d1">
       <div id="d2">实时股票价格信息</div>
       <div id="d3">
        <table width="100%" border="0" cellpadding="0" cellspacing="0">
         <thead>
          <tr><td>股票代码</td><td>股票名称</td><td>报价</td></tr>
         </thead>
         <tbody>
         </tbody>
        </table>
       </div>
      </div>
     </body>
    </html>


    例子2:
    car.jsp

    <%@page pageEncoding="utf-8" 
    contentType="text/html;charset=utf-8" %>
    <html>
     <head>
      <style>
       #d1{
        500px;
        margin-left:50px;
        margin-top:40px;
       }
       #tips{
        display:none;
        background-color:#fff8dc;
        border:1px dotted red;
       }
      </style>
      <script type="text/javascript" src="js/jquery-1.4.3.js">
      </script>
      <script type="text/javascript">
       $(function(){
        
        $('#s1').change(function(){
         $('tbody').html('');
         $.ajax({
          url:'<%=request.getContextPath()%>/carInfo.do',
          type:'post',
          //data:{'carName':$('#s1').val()},
          data:$('#s1').serializeArray(),
          //data: carName = $('#s1').val(),
          //data:$('#s1').serialize(),
          dataType:'xml',
          success:function(data1){
           //data1:服务器返回的数据
           //如果返回的是json字符串,会自动
           //转换成javascript对象或者数组
           //如果返回的是xml,会将其转换成
           //一棵xml dom树,可以使用jQuery
           //提供的遍历方法,比如parent,children,find
           //来访问棵树
           //为了方便遍历,要使用$(data1),将其包装成
           //一个jQuery对象。 
           $('tbody').append(
           '<tr><td>长度:' 
           + $(data1).find('size').text() 
           +'车重:' 
           + $(data1).find('weigth').text() 
           + '</td><td>排汽量:' 
           + $(data1).find('vol').text()
            + ' 加速性能:' 
            + $(data1).find('speed').text() 
            + '</td><td>车门数:' 
            + $(data1).find('doors').text() + 
            ' 颜色:' + $(data1).find('color').text() 
            + '</td></tr>');
            $('#tips').show();
            setTimeout(function(){
             $('#tips').hide();
            },3000);
           },
          error:function(){
           alert('系统出错');
          }
         });
        });
        
        
        
       });
      </script>
     </head>
     <body style="font-size:30px;">
      <div id="d1">
       <div>热门suv精选</div>
       <div>
        <select style="150px;" name="carName" id="s1" 
        style="font-size:40px;">
         <option value="bmwx6">bmw x6</option>
         <option value="benz550">benz 550ml</option>
         <option value="canye">卡宴</option>
        </select>
       <div>
       <div id="tips">
        <table cellpadding="0" cellspacing="0"
        width="100%">
         <thead>
          <tr style="background-color:#cccccc"><td>基本参数</td><td>发动机</td><td>其它</td></tr>
         </thead>
         <tbody>
         </tbody>
        </table>
       </div>
      </div>
     </body>
    </html>

    例子3:
    order.jsp

    <%@page pageEncoding="utf-8" 
    contentType="text/html;charset=utf-8" %>
    <html>
     <head>
      <script type="text/javascript" src="js/jquery-1.4.3.js">
      </script>
      <script type="text/javascript">
       $(function(){
        $('.s1').toggle(function(){
         //使用遍历的方式找到航班号
         var airline = 
         $(this).parent().siblings().eq(0).text();
         //使用ajax向服务器发请求
         //$(this).next()
         //.load('price.do','airline=' + airline);
         $(this).next().load('price.do',
         {'airline':airline});
         $(this).html('显示经济舱价格');
        },function(){
         $(this).next().empty();
         $(this).html('显示全部价格');
        });
       });
      </script>
     </head>
     <body style="font-size:30px;">
      <table  cellpadding="0" 
      cellspacing="0" border="1">
       <tr><td>航班号</td><td>机型</td><td>起飞时间</td><td>到达时间</td><td>&nbsp;</td><td>经济舱价格</td><td>&nbsp;</td></tr>
       <tr><td>ca1008</td><td><a href="#">767</a></td><td>8:00</td><td>10:00</td><td><a href="javascript:;" class="s1">显示所有票价</a><div></div></td><td>¥1200</td><td><input type="button" value="订票"/></td></tr>
       <tr><td>mu2000</td><td><a href="#">320</a></td><td>6:00</td><td>9:00</td><td><a href="javascript:;" class="s1">显示所有票价</a><div></div></td><td>¥800</td><td><input type="button" value="订票"/></td></tr>
      </table>
     </body>
    </html>

    共用的ActionServlet.java

    package web;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Random;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.json.JSONArray;
    import bean.Stock;
    
    public class ActionServlet extends HttpServlet {
     public void service(HttpServletRequest request, HttpServletResponse response)
       throws ServletException, IOException {
      request.setCharacterEncoding("utf-8");
      response.setContentType("text/html;charset=utf-8");
      PrintWriter out = response.getWriter();
      String uri = request.getRequestURI();
      String action = uri.substring(uri.lastIndexOf("/"),
        uri.lastIndexOf("."));
      if(action.equals("/price")){
       System.out.println("price...");
       String airline = request.getParameter("airline");
       String airlineInfo = "";
       if(airline.equals("ca1008")){
        airlineInfo = "头等舱:¥2400<br/>商务舱:¥2000";
       }else{
        airlineInfo = "头等舱:¥2000<br/>商务舱:¥1600";
       }
       out.println(airlineInfo);
      }else if(action.equals("/quoto")){
       //模拟生成10支股票信息
       List<Stock> stocks = 
        new ArrayList<Stock>();
       Random r = new Random();
       for(int i=0;i<10;i++){
        Stock s = new Stock();
        s.setStockNo("s1000" + i);
        s.setStockName("深发展" + i);
        s.setPrice(r.nextInt(100));
        stocks.add(s);
       }
       //将stocks内容转换成json字符串
       JSONArray arry = 
        JSONArray.fromObject(stocks);
       String str = arry.toString();
       System.out.println(str);
       out.println(str);
      }else if(action.equals("/carInfo")){
       //模拟一个错误
       if(1==2){
        throw new ServletException("some error");
       }
       //将车的信息以xml文档的方式发送给客户端
       response.setContentType(
         "text/xml;charset=utf-8");
       String carName = request.getParameter(
         "carName");
       System.out.println("carName:" + carName);
       StringBuffer sb = new StringBuffer();
       sb.append("<car>");
       if(carName.equals("bmwx6")){
        sb.append("<basic><size>4.8</size><weigth>2t</weigth></basic>");
        sb.append("<enginee><vol>3.2</vol><speed>5s</speed></enginee>");
        sb.append("<other><doors>5</doors><color>red</color></other>");
       }else if(carName.equals("benz550")){
        sb.append("<basic><size>5.1</size><weigth>2.5t</weigth></basic>");
        sb.append("<enginee><vol>4.2</vol><speed>4s</speed></enginee>");
        sb.append("<other><doors>5</doors><color>yellow</color></other>");
       }else{
        sb.append("<basic><size>4.6</size><weigth>1.9t</weigth></basic>");
        sb.append("<enginee><vol>2.2</vol><speed>7s</speed></enginee>");
        sb.append("<other><doors>5</doors><color>blue</color></other>");
       }
       sb.append("</car>");
       out.println(sb.toString());
      }
      out.close();
     }
    
    }

    xml配置:

     <servlet-mapping>
        <servlet-name>ActionServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>


      
     
    使用到的Stock.java类

    package bean;
    
    public class Stock {
     private String stockNo;
     private String stockName;
     private double price;
     public double getPrice() {
      return price;
     }
     public void setPrice(double price) {
      this.price = price;
     }
     public String getStockName() {
      return stockName;
     }
     public void setStockName(String stockName) {
      this.stockName = stockName;
     }
     public String getStockNo() {
      return stockNo;
     }
     public void setStockNo(String stockNo) {
      this.stockNo = stockNo;
     }
    }
  • 相关阅读:
    ndk-build:command not found
    Linux shell 之 sed 命令详解 第三部分
    Linux shell 之 sed 命令详解 第二部分
    Linux shell 之 sed 概述
    Linux shell 之 sed 命令详解 第一部分
    git 如何撤销 commit (未 push)
    如何在 ubuntu 系统上安装 jdk
    Ubuntu 16.04.06(32位)安装samba--“”拒绝访问”
    Ubuntu 安装 vim、ssh、samba
    OC中block对于变量的捕获
  • 原文地址:https://www.cnblogs.com/hqr9313/p/2624983.html
Copyright © 2020-2023  润新知