zoukankan      html  css  js  c++  java
  • Ajax技术基本应用

    1.Ajax 简介

    1.1Ajax 是什么?  

    Ajax (Asynchronous JavaScript and XML) 是一种Web应用技术,可以借助客户端脚本(javascript)与服务端应用进行异步通讯,获取服务端数据以后,可以进行局部刷新。进而提高数据的响应和渲染速度。

    传统Web应用中简易的同步模型分析,如图-1所示:

     

    基于Ajax技术的异步请求响应模型分析,如图-2所示:

     

    1.2Ajax 技术应用场景?

    Ajax技术最大的优势就是底层异步,然后局部刷新,进而提高用户体验,这种技术现在在很多项目中都有很好的应用,例如:

    • 商品系统。

    • 评价系统。

    • 地图系统。

    • …..

    AJAX可以仅向服务器发送并取回必要的数据,并在客户端采用JavaScript处理来自服务器的响应。这样在服务器和浏览器之间交换的数据大量减少,服务器响应的速度就更快了。但Ajax技术也有劣势,最大劣势是不能直接进行跨域访问。

    1.3Ajax 技术时序模型分析?  

    传统Web应用中的,同步请求应用时序模型分析,如图-3所示:

     

    在图-3中,客户端向服务端向服务端发送请求需要等待服务端的响应结果,服务端返回数据以后,客户端可以继续发送请求。

     基于Ajax技术的Web异步请求响应模型如图-4所示:

     

    在图-4中,客户端可以向服务端发送异步请求,客户端无需等待服务端的响应结果,可以不断向服务端发送请求。

    2.Ajax 快速入门

    2.1 Ajax 请求响应过程分析

    所有的Ajax 请求都会基于DOM(HTML元素)事件,通过XHR(XMLHttpRequest)对象实现与服务端异步通讯局部更新,如图-4所示:

     

    2.2 Ajax 编程基本步骤分析

    第一步:基于dom事件创建XHR对象(XMLHttpRequest对象)

    第二步:注册XHR对象状态监听,通过回调函数(callback)处理状态信息。

    第三步:创建与服务端的连接

    第四步:发送异步请求实现与服务端的通讯

    第五步:通过回调(callback)函数,获得响应结果并进行数据更新.(非阻塞)

    2.3 Ajax 请求响应编程操作实践

    基于ajax技术中的XMLHttpRequest对象,向服务端发起异步Get请求,关键代码分析如下:

    function doAjaxGet(url,params,callback){
          //1.创建XmlHttpRequest对象
          var xhr=new XMLHttpRequest();
          //2.设置状态监听,监听XmlHttpRequest对象与服务端通讯的过程(例如连接是否建立,请求是否在处理,响应是否已产生)
          xhr.onreadystatechange=function(){//callback(回调函数)
            //基于xhr对象获取的通讯状态,对响应数据进行处理

            //readyState状态说明

            //0:未初始化,尚未调用open() 方法

            //1:启动。已经调用open() 方法,但尚未调用send() 方法

            //2:发送。已经调用send() 方法,但尚未接收到响应

            //3:接收。已经接收到部分响应

            //4:完成。已经接收到全部响应数据,而且已经可以在客户端使用了

            

                 if(xhr.readyState==4&&xhr.status==200){//500表示服务端出错了
              //服务端响应的结果会传递给XHR对象,我们可以借助responseText获取响应结果
              callback(xhr.responseText);
              }
          }
        //3.创建与服务端的连接
          xhr.open("GET",url+"?"+params,true);//true表示异步
          //4.发送请求
          xhr.send(null); //Get请求,send方法不传内容
        //5.对响应结果进行处理(在回调函数中处理)。
    }

    2.4 Ajax Post 请求操作实现

    基于ajax中XMLHttpRequest对象,向服务端发起异步Post请求。对于post请求在发送请求执行需要设置请求头,见红色代码部分。

    function doAjaxPost(url,params,callback){
    //1.创建XmlHttpRequest对象
    var xhr=new XMLHttpRequest();
    //2.设置状态监听,监听XmlHttpRequest对象与服务端通讯的过程.
    xhr.onreadystatechange=function(){//callback(回调函数)
    //基于xhr对象获取的通讯状态,对响应数据进行处理
    if(xhr.readyState==4&&xhr.status==200){//500表示服务端出错了
    //服务端响应的结果会传递给XHR对象,
                      //我们可以借助xhr.responseText获取响应结果
    callback(xhr.responseText);
    }
    }
    //3.创建与服务端的连接
    xhr.open("POST",url,true);//true表示异步
    xhr.setRequestHeader("Content-Type",
          "application/x-www-form-urlencoded");
    //4.发送请求
    xhr.send(params); //post请求将参数写到send方法
    //5.对响应结果进行处理(在回调函数中处理)。
    }

    什么是readyState
    readyState是XMLHttpRequest对象的一个属性,用来标识当前XMLHttpRequest对象处于什么状态。
    readyState总共有5个状态值,分别为0~4,每个值代表了不同的含义

    0:初始化,XMLHttpRequest对象还没有完成初始化
    1:载入,XMLHttpRequest对象开始发送请求
    2:载入完成,XMLHttpRequest对象的请求发送完成
    3:解析,XMLHttpRequest对象开始读取服务器的响应
    4:完成,XMLHttpRequest对象读取服务器响应结束
     

    status是XMLHttpRequest对象的一个属性,表示响应的HTTP状态码
    在HTTP1.1协议下,HTTP状态码总共可分为5大类

    1xx:信息响应类,表示接收到请求并且继续处理
    2xx:处理成功响应类,表示动作被成功接收、理解和接受
    3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
    4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
    5xx:服务端错误,服务器不能正确执行一个正确的请求
     
    100——客户必须继续发出请求
    101——客户要求服务器根据请求转换HTTP协议版本
    200——交易成功
    201——提示知道新文件的URL
    202——接受和处理、但处理未完成
    203——返回信息不确定或不完整
    204——请求收到,但返回信息为空
    205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
    206——服务器已经完成了部分用户的GET请求
    300——请求的资源可在多处得到
    301——删除请求数据
    302——在其他地址发现了请求数据
    303——建议客户访问其他URL或访问方式
    304——客户端已经执行了GET,但文件未变化
    305——请求的资源必须从服务器指定的地址得到
    306——前一版本HTTP中使用的代码,现行版本中不再使用
    307——申明请求的资源临时性删除
    400——错误请求,如语法错误
    401——请求授权失败
    402——保留有效ChargeTo头响应
    403——请求不允许
    404——没有发现文件、查询或URl
    405——用户在Request-Line字段定义的方法不允许
    406——根据用户发送的Accept拖,请求资源不可访问
    407——类似401,用户必须首先在代理服务器上得到授权
    408——客户端没有在用户指定的饿时间内完成请求
    409——对当前资源状态,请求不能完成
    410——服务器上不再有此资源且无进一步的参考地址
    411——服务器拒绝用户定义的Content-Length属性请求
    412——一个或多个请求头字段在当前请求中错误
    413——请求的资源大于服务器允许的大小
    414——请求的资源URL长于服务器允许的长度
    415——请求资源不支持请求项目格式
    416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
    417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
    500——服务器产生内部错误
    501——服务器不支持请求的函数
    502——服务器暂时不可用,有时是为了防止发生系统过载
    503——服务器过载或暂停维修
    504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
    505——服务器不支持或拒绝支请求头中指定的HTTP版本
     上述代码可分为四部分  如图所示
     
     
    调用关系 如图

     

     也可以将代码放入一个指定的js文件中   然后在html文件去引用这个js文件

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <div>
    <!-- <button onclick="doAjaxGet()">doAjaxGet</button> -->
    <button onclick="doAjaxGetRequest()">doAjaxGet</button>
    <button onclick="doAjaxPostRequest()">doAjaxPost</button>
    </div>

    <div id="result"></div>

    <!-- 引入js文件 -->
    <script type="text/javascript" src="/js/ajax.js"></script>  
    <script type="text/javascript">
    function doAjaxGetRequest() {
    //定义请求url
    var url = "/ajax/doAjaxGetRequest1";
    //定义请求参数
    var params = "key=A";
    //发送ajax请求
    doAjaxGet(url, params, function(result) {
    var div = document.getElementById("result");
    div.innerHTML = result;
    });
    }
    function doAjaxPostRequest() {
    //定义请求url
    var url = "/ajax/doAjaxPostRequest";
    //定义请求参数
    var params = "key=C&value=300";
    //发送ajax请求
    doAjaxPost(url, params, function(result) {
    alert(result)
    });
    }
    </script>
    </body>
    </html>

    还可以以对象方式访问

    html中代码:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <div>
    <!-- <button onclick="doAjaxGet()">doAjaxGet</button> -->
    <button onclick="doAjaxGetRequest()">doAjaxGet</button>
    <button onclick="doAjaxPostRequest()">doAjaxPost</button>
    </div>

    <div id="result"></div>
    <script type="text/javascript" src="/js/ajaxfs.js"></script>
    <script type="text/javascript">
    function doAjaxGetRequest() {
    //定义请求url
    var url = "/ajax/doAjaxGetRequest1";
    //定义请求参数
    var params = "key=A";
    //发送ajax请求
    Ajax.doAjaxGet(url, params, function(result) {
    var div = document.getElementById("result");
    div.innerHTML = result;
    });
    }
    function doAjaxPostRequest() {
    //定义请求url
    var url = "/ajax/doAjaxPostRequest";
    //定义请求参数
    var params = "key=C&value=300";
    //发送ajax请求
    Ajax.doAjaxPost(url, params, function(result) {
    alert(result)
    });
    }
    </script>
    </body>
    </html>

     --------------------------------------------------------------------------------------

    js中代码

    (function(){
    var ajax = function(){}
    ajax.prototype={
    doAjaxGet:function (url, params, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
    // console.log(xhr.responseText);
    callback(xhr.responseText);
    }
    }
    //xhr.open("GET","http://localhost:8080/ajax/doAjaxGetRequest",true);
    xhr.open("GET",url+"?"+params,true);
    xhr.send(null);
    },
    doAjaxPost:function (url, params, callback) {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
    // console.log(xhr.responseText);
    callback(xhr.responseText);
    }
    }
    //xhr.open("GET","http://localhost:8080/ajax/doAjaxGetRequest",true);
    xhr.open("POST",url,true);
    xhr.setRequestHeader("Content-Type",
    "application/x-www-form-urlencoded");
    xhr.send(params);
    }
    }
    window.Ajax=new ajax;
    })()

    3.Ajax 技术在Jquery中应用

    3.1Jquery 简介

    jQuery是一个快速、简洁的JavaScript框架,是一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

    3.2Jquery 中常用Ajax 函数

       jQuery中基于标准的ajax api 提供了丰富的Ajax函数应用,基于这些函数可以编写少量代码,便可以快速实现Ajax操作。常用函数有:

    • $(selector).load(url,data,callback)——把远程数据加载到被选的元素中
    • $.ajax(options)——把远程数据加载到 XMLHttpRequest 对象中
    • $.get(url,data,callback,type)——使用 HTTP GET 来加载远程数据
    • $.post(url,data,callback,type)——使用 HTTP POST 来加载远程数据
    • $.getJSON(url,data,callback)——使用 HTTP GET 来加载远程 JSON 数据
    • $.getScript(url,callback)——加载并执行远程的 JavaScript 文件

    说明:jquery 中ajax相关函数的语法可参考官网https://api.jquery.com/category/ajax/

    3.3使用Ajax对服务器端数据进行处理

    服务器端:

    DAO层:

    package com.cy.pj.activity.dao;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Delete;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    
    import com.cy.pj.activity.pojo.Activity.Activity;
    
    @Mapper
    public interface ActivityDao {
        //查询所有数据
        @Select("select * from tb_activity")
        List<Activity> dofindActivity();
        
        //根据id删除数据
        @Delete("delete from tb_activity where id=#{id}")
        int deleteById(Long id);
        
        //添加数据
        int insertObject(Activity activity);
        
    }

    service层及service接口实现类:

    package com.cy.pj.activity.service;
    
    import java.util.List;
    
    import org.springframework.stereotype.Service;
    
    import com.cy.pj.activity.pojo.Activity.Activity;
    @Service
    public interface ActivityService {
        //查询全部数据
        List<Activity> findActivity();
        //根据id删除数据
        int deleteById(Long id);
        //添加数据
        int insertObject(Activity activity);
        
    }
    package com.cy.pj.activity.serviceimpl;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.cy.pj.activity.dao.ActivityDao;
    import com.cy.pj.activity.pojo.Activity.Activity;
    import com.cy.pj.activity.service.ActivityService;
    
    @Service
    public class ActivityServiceImpl implements ActivityService{
        @Autowired 
        private ActivityDao activityDao;
    
        @Override
        public List<Activity> findActivity() {
            return activityDao.dofindActivity();
        }
        @Override
        public int deleteById(Long id) {
            return activityDao.deleteById(id);
        }
         @Override
        public int insertObject(Activity activity) {
            return activityDao.insertObject(activity);
        }
        
    }

    controller层:

    package com.cy.pj.activity.controller;
    
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.cy.pj.activity.pojo.Activity.Activity;
    import com.cy.pj.activity.service.ActivityService;
    
    @Controller
    @RequestMapping("activity")
    public class ActivityController {
        @Autowired 
        private ActivityService activityService;
        
        //查询全部
        @RequestMapping("doActivityUI")
        public String doActivity() {
            return "activity";
        }
        
        @RequestMapping("dofindActivity")
        @ResponseBody//此注解用于告诉spring mvc要对此方法的返回结果进行转换处理
                       //假如方法返回值为对象(不包含字符串,直接量),
                    //spring mvc可以将其转换为json格式的字符串
        public List<Activity> dofindActivity(){
            return activityService.findActivity();//Spring MVC框架底层默认会使用jackson API将对象转换为json格式字符串。
        }
        //删除数据
        @RequestMapping("doDeleteById")
        @ResponseBody
        public String doDeleteById(Long id){
            activityService.deleteById(id);
            return "delete";
        }
        //添加数据
        @RequestMapping("doInsertObject")
        @ResponseBody
        public String doInsertObject(Activity activity){
            activityService.insertObject(activity);
            return "添加成功";
        }
        
        
    }

    pojo对象:

     1 package com.cy.pj.activity.pojo.Activity;
     2 
     3 import java.util.Date;
     4 
     5 import org.springframework.format.annotation.DateTimeFormat;
     6 
     7 import com.fasterxml.jackson.annotation.JsonFormat;
     8 
     9 import lombok.Data;
    10 @Data
    11 public class Activity {
    12 
    13     private Long id;
    14     private String title;
    15     private String category;
    16     //此注解用于描述属性或set方法,告诉spring mvc 按指定格式接收客户端数据
    17     @DateTimeFormat(pattern ="yyyy/MM/dd HH:mm" )//应用场景对应set方法
    18     @JsonFormat(pattern = "yyyy/MM/dd HH:mm",timezone = "GMT+8")//此注解用于描述属性或get方法
    19     private Date startTime;//java.util.Date
    20     @DateTimeFormat(pattern ="yyyy/MM/dd HH:mm" )
    21     @JsonFormat(pattern = "yyyy/MM/dd HH:mm",timezone = "GMT+8")
    22     private Date endTime;
    23     private String remark;
    24     private Integer state;
    25     private Date createdTime;
    26     private String createdUser;
    27     
    28 }

    json格式


    json的get函数(红色部分)

        function doGetctivity(){
                 //1.定义url
                 var url="dofindActivity";
                 //2.定义请求参数
                 //3.发送异步请求,处理响应结果
                 //3.发送异步ajax请求,处理响应结果
                 //Jquery中Get函数应用
                 //向服务端发送Get请求,并将服务端返回的json格式字符串转换为json格式的js对象
                 $.get(url,function(result){//处理服务端响应的结果
                    //获取tbody对象
                    var tBody=$("#tbodyId");
                    //清空tbody中内容
                    tBody.empty();
                    //迭代result对象,并将result内容追加到tbody中
                    result.forEach(item=>tBody.append(doCreateRow(item)));
                 },"json")
             }

    服务器端:

    整体代码

      1 <!DOCTYPE html>
      2 <html lang="zh-CN">
      3 <head>
      4 <meta charset="utf-8">
      5 <meta http-equiv="X-UA-Compatible" content="IE=edge">
      6 <meta name="viewport" content="width=device-width, initial-scale=1">
      7 <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
      8 <title>Bootstrap 101 Template</title>
      9 <!-- Bootstrap -->
     10 <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
     11 
     12 </head>
     13 <body>
     14 
     15     <div class="container">
     16         <h1>商品列表</h1>
     17         <!-- Button trigger modal -->
     18         <button type="button" class="btn btn-primary btn-lg"
     19             data-toggle="modal" data-target="#myModal">创建活动</button>
     20         <table class="table">
     21             <thead>
     22                 <tr>
     23                     <th><input type="checkbox">全选</th>
     24                     <th>名称</th>
     25                     <th>开始时间</th>
     26                     <th>结束时间</th>
     27                     <th>状态</th>
     28                     <th colspan="2">操作</th>
     29                 </tr>
     30             </thead>
     31             <tbody id="tbodyId">
     32                 <tr>
     33                     <td colspan="6">数据正在加载.....</td>
     34                 </tr>
     35             </tbody>
     36         </table>
     37     </div>
     38 
     39     <div class="modal fade" id="myModal" tabindex="-1" role="dialog"
     40         aria-labelledby="myModalLabel">
     41         <div class="modal-dialog" role="document">
     42             <div class="modal-content">
     43                 <div class="modal-header">
     44                     <button type="button" class="close" data-dismiss="modal"
     45                         aria-label="Close">
     46                         <span aria-hidden="true">&times;</span>
     47                     </button>
     48                     <h4 class="modal-title" id="myModalLabel">Modal title</h4>
     49                 </div>
     50                 <div class="modal-body">
     51                     <form method="post">
     52                         <div class="form-group">
     53                             <label for="titleId">名称</label> <input type="text"
     54                                 class="form-control" id="titleId" name="title"
     55                                 placeholder="please input  title">
     56                         </div>
     57                         <div class="form-group">
     58                             <label for="categoryId">类型</label> <input type="text"
     59                                 class="form-control" id="categoryId" name="category"
     60                                 placeholder="please input  category">
     61                         </div>
     62                         <div class="form-group">
     63                             <label for="startTimeId">开始时间</label> <input type="text"
     64                                 class="form-control" id="startTimeId" name="startTime"
     65                                 placeholder="please input  startTime">
     66                         </div>
     67                         <div class="form-group">
     68                             <label for="endTimeId">结束时间</label> <input type="text"
     69                                 class="form-control" id="endTimeId" name="endTime"
     70                                 placeholder="please input  end time">
     71                         </div>
     72                         <div class="form-group">
     73                             <label for="remarkId">备注</label>
     74                             <textarea class="form-control" id="remarkId" rows="3" cols="100"
     75                                 name="remark" placeholder="please input  end time"></textarea>
     76                         </div>
     77                     </form>
     78                 </div>
     79                 <div class="modal-footer">
     80                     <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
     81                     <button type="button" class="btn btn-primary" onclick="doInsertOrUpdate()">Save changes</button>
     82                 </div>
     83             </div>
     84         </div>
     85     </div>
     86     <!-- /.modal -->
     87 
     88     <!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
     89 
     90     <script src="/jquery/jquery.min.js"></script>
     91     <!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
     92 
     93     <script src="/bootstrap/js/bootstrap.min.js"></script>
     94     <script type="text/javascript">
     95         $(function(){
     96             doGetctivity();
     97         })
     98         function doInsertOrUpdate(){
     99             //定义url
    100             var url="doInsertObject";
    101             //获取表单中的数据
    102             //serialize()为jquary中获取表单数据的一个的函数
    103             var params=$("form").serialize();
    104             //异步提交表单ajax方式
    105             $.ajax({
    106                 "url":url,
    107                 "mothed":"post",
    108                 "dataType":"text",
    109                 "data":params,
    110                 "success":function(result){
    111                     alert(result);
    112                     //手动隐藏模态框
    113                     $('#myModal').modal('hide');
    114                     //清除原有内容
    115                     $(".form-control").val("");
    116                     //重新查询,刷新页面
    117                     doGetctivity();
    118                 }
    119             });
    120             //异步提交表单 post提交方式
    121             //$.post(url,params,function(result){
    122                 //alert(result);
    123                 //手动隐藏模态框
    124                 //$('#myModal').modal('hide');
    125                 //清除原有内容
    126                 //$(".form-control").val("");
    127                 //重新查询,刷新页面
    128                 //doGetctivity();
    129             //})
    130             
    131         }
    132         function doGetctivity(){
    133              //1.定义url
    134              var url="dofindActivity";
    135              //2.定义请求参数
    136              //3.发送异步请求,处理响应结果
    137              //3.发送异步ajax请求,处理响应结果
    138              //Jquery中Get函数应用
    139              //向服务端发送Get请求,并将服务端返回的json格式字符串转换为json格式的js对象
    140              $.get(url,function(result){//处理服务端响应的结果
    141                 //获取tbody对象
    142                 var tBody=$("#tbodyId");
    143                 //清空tbody中内容
    144                 tBody.empty();
    145                 //迭代result对象,并将result内容追加到tbody中
    146                 result.forEach(item=>tBody.append(doCreateRow(item)));
    147              },"json")
    148          }
    149          function doCreateRow(item){
    150              //ES6中可以使用``替换字符串的连接,其内部取值可使用${}表达式
    151              return `<tr>
    152                        <td><input type='checkbox' value=${item.id}></td>
    153                        <td>${item.title}</td>
    154                        <td>${item.startTime}</td>
    155                        <td>${item.endTime}</td>
    156                        <td>${item.state==1?'有效':'无效'}</td>
    157                        <td><button type="button" class="btn btn-danger" onclick='doDeleteById(${item.id})'>delete</button></td>
    158                      </tr>`;
    159          }
    160          function doDeleteById(id){
    161              //弹框确定删除吗
    162              if(!confirm("确定删除吗"))return;
    163             //定义url
    164              var url = "doDeleteById";
    165             //定义参数
    166              var params=`id=${id}`;
    167              $.post(url,params,function(result){//客户端与服务端通讯结束会回调此函数
    168                  alert(result);
    169                  doGetctivity();//刷新
    170               });
    171              }
    172     
    173     </script>
    174 </body>
    175 </html>

    新增代码块

    function doInsertOrUpdate(){
                //定义url
                var url="doInsertObject";
                //获取表单中的数据
                //serialize()为jquary中获取表单数据的一个的函数
                var params=$("form").serialize();
                //异步提交表单ajax方式
                $.ajax({
                    "url":url,
                    "mothed":"post",
                    "dataType":"text",
                    "data":params,
                    "success":function(result){
                        alert(result);
                        //手动隐藏模态框
                        $('#myModal').modal('hide');
                        //清除原有内容
                        $(".form-control").val("");
                        //重新查询,刷新页面
                        doGetctivity();
                    }
                });

    上述的$.ajax代码可更换为

    //异步提交表单 post提交方式
                $.post(url,params,function(result){
                    alert(result);
                    //手动隐藏模态框
                    $('#myModal').modal('hide');
                    //清除原有内容
                    $(".form-control").val("");
                    //重新查询,刷新页面
                    doGetctivity();
                })
                

    删除代码块

     function doDeleteById(id){
                 //弹框确定删除吗
                 if(!confirm("确定删除吗"))return;
                //定义url
                 var url = "doDeleteById";
                //定义参数
                 var params=`id=${id}`;
                 $.post(url,params,function(result){//客户端与服务端通讯结束会回调此函数
                     alert(result);
                     doGetctivity();//刷新
                  });
                 }

    查询代码块

    
    
    $(function(){//文档就绪函数
                doGetctivity();
            })
    function doGetctivity(){
                 //1.定义url
                 var url="dofindActivity";
                 //2.定义请求参数
                 //3.发送异步请求,处理响应结果
                 //3.发送异步ajax请求,处理响应结果
                 //Jquery中Get函数应用
                 //向服务端发送Get请求,并将服务端返回的json格式字符串转换为json格式的js对象
                 $.get(url,function(result){//处理服务端响应的结果
                    //获取tbody对象
                    var tBody=$("#tbodyId");
                    //清空tbody中内容
                    tBody.empty();
                    //迭代result对象,并将result内容追加到tbody中
                    result.forEach(item=>tBody.append(doCreateRow(item)));
                 },"json")
             }
             function doCreateRow(item){
                 //ES6中可以使用``替换字符串的连接,其内部取值可使用${}表达式
                 return `<tr>
                           <td><input type='checkbox' value=${item.id}></td>
                           <td>${item.title}</td>
                           <td>${item.startTime}</td>
                           <td>${item.endTime}</td>
                           <td>${item.state==1?'有效':'无效'}</td>
                           <td><button type="button" class="btn btn-danger" onclick='doDeleteById(${item.id})'>delete</button></td>
                         </tr>`;
             }

    模态框模板:可在bootstrap官网查找https://v3.bootcss.com/的JavaScript插件中查找

     此项目的模态框样式为

     

  • 相关阅读:
    Android下获取FPS的几种方法
    Headless Android开发板的调试及远程显示和控制
    ServiceHub.DataWarehouseHost.exe内存泄漏问题的处理
    Android远程桌面助手(Build 0787)
    Android远程桌面助手(Build 0737)
    Vysor破解助手for Linux/macOS/Windows
    Android远程桌面助手
    Vysor破解助手for Linux and macOS
    Django入门第一步(安装和创建一个简单的项目)
    Python-操作Excel
  • 原文地址:https://www.cnblogs.com/wangjincai/p/13263616.html
Copyright © 2011-2022 走看看