ajax异步加载查询数据库

Posted 清-华-园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax异步加载查询数据库相关的知识,希望对你有一定的参考价值。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>数据</title>
        <link rel="stylesheet" href="static/css/style.css" type="text/css">
        <!-- jQuery-easyUI start -->
        <link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/default/easyui.css">
        <link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/icon.css">
        <link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/themes/color.css">
        <link rel="stylesheet" type="text/css" href="https://www.jeasyui.com/easyui/demo/demo.css">
        <script type="text/javascript" src="https://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script type="text/javascript" src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
        <!-- jQuery-easyUI end -->
        <script type="text/javascript">
            document.createElement("section");
            document.createElement("article");
            document.createElement("footer");
            document.createElement("header");
            document.createElement("hgroup");
            document.createElement("nav");
            document.createElement("menu");
        </script>
        <script type="text/javascript">
            function Save() {
                document.getElementById("PageOfficeCtrl1").WebSave();
            }
        </script>
    </head>
    <body>
        <header>
            <div class="w12 header">
                <a class="db logo fl"><img src="static/images/logo.jpg"
                    width="327" height="94" alt="" />
                </a>
                <div class="fr logofr">
                    <a href="#" class="blk">返回首页</a> |<a href="#" class="blk">客服中心</a><br>
                    如注册遇到问题请拨打:<strong style="font-size:14px;">400-000-0000</strong>
                </div>
            </div>
        </header>
        <div class="head_border"></div>
        <section class="w12 login"> <em class="fr">当前用户:张三 </em> </section>
        <section class="main w12">
            <div class="title">
                <a class="title1 db fl">审核报告</a><a class="title2 db fl">审核合同</a>
            </div>
            <div class="fr tit2">
                <span class="arr"></span>
            </div>
        </section>
        <br /><br />
        
        <div style="text-align:content;margin-left: 300px;">
            <table id="dg" title="北京某某科技有限公司" class="easyui-datagrid" style="width:700px;height:250px;,margin: auto;"
                    url="get_users.php" toolbar="#toolbar" pagination="true" rownumbers="true" fitColumns="true" singleSelect="true">
                <thead>
                    <tr id="insertSpareEpt">
                        <th field="firstname" width="50">单位编号</th>
                        <th field="lastname" width="50">单位名称</th>
                        <th field="phone" width="50">单位性质</th>
                        <th field="email" width="50">单位地址</th>
                    </tr>
                </thead>
            </table>
        </div>
        
        <div id="toolbar">
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="newUser()">添加</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-edit" plain="true" onclick="editUser()">修改</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyUser()">删除</a>
        </div>
        <div id="divTab"></div>
        <!-- 弹窗 -->
        <div id="dlg" class="easyui-dialog" style="width:400px" data-options="closed:true,modal:true,border:‘thin‘,buttons:‘#dlg-buttons‘">
            <form id="fm" method="post" novalidate style="margin:0;padding:20px 50px">
                <h3>单位信息</h3>
                <div style="margin-bottom:10px">
                    <input name="firstname" class="easyui-textbox" required="true" label="单位编号:" style="width:100%">
                </div>
                <div style="margin-bottom:10px">
                    <input name="lastname" class="easyui-textbox" required="true" label="单位名称:" style="width:100%">
                </div>
                <div style="margin-bottom:10px">
                    <input name="phone" class="easyui-textbox" required="true" label="单位性质:" style="width:100%">
                </div>
                <div style="margin-bottom:10px">
                    <input name="email" class="easyui-textbox" required="true" validType="email" label="单位地址:" style="width:100%">
                </div>
            </form>
        </div>
        <div id="dlg-buttons">
            <a href="javascript:void(0)" class="easyui-linkbutton c6" iconCls="icon-ok" onclick="saveUser()" style="width:90px">添加</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel" onclick="javascript:$(‘#dlg‘).dialog(‘close‘)" style="width:90px">取消</a>
        </div>
        
        <script type="text/javascript">
            var url;
            function newUser(){
                $(#dlg).dialog(open).dialog(center).dialog(setTitle,New User);
                $(#fm).form(clear);
                url = save_user.php;
            }
            function editUser(){
                var row = $(#dg).datagrid(getSelected);
                if (row){
                    $(#dlg).dialog(open).dialog(center).dialog(setTitle,Edit User);
                    $(#fm).form(load,row);
                    url = update_user.php?id=+row.id;
                }
            }
            function saveUser1(){
                $(#fm).form(submit,{
                    url: saveInfo,
                    onSubmit: function(){
                        return $(this).form(validate);
                    },
                    success: function(result){
                        var result = eval((+result+));
                        if (result.errorMsg){
                            $.messager.show({
                                title: Error,
                                msg: result.errorMsg
                            });
                        } else {
                            $(#dlg).dialog(close);        // close the dialog
                            $(#dg).datagrid(reload);    // reload the user data
                        }
                    }
                });
            }
            
            /* 保存  */
            function saveUser(){
                var info;
                var firstname = $("input[name=‘firstname‘]").val();
                var lastname = $("input[name=‘lastname‘]").val();
                var phone = $("input[name=‘phone‘]").val();
                var email = $("input[name=‘email‘]").val();
                $.ajax({
                    type : get,
                    url : saveInfo,
                    data:{
                        "firstname":firstname,
                        "lastname":lastname,
                        "phone":phone,
                        "email":email
                    },
                    cache : false,
                    async : false,
                    dataType : json,
                    success : function(data){
                        $("#dg").datagrid("loadData",data);// 数据加载jQuery easyUI表格中
                    
                    /* var tabStr = "";
                    $.each(data, function(index,value){
                        var item = data[index];
                        var itemFirstname = item.firstname;
                        var itemLastname = item.lastname;
                        var itemPhone = item.phone;
                        var itemEmail = item.email;
                        var itemStr = "<table border=‘1‘ cellpadding=‘0‘ cellspacing=‘0‘><tr>"+
                                      "<td name=‘firstname‘ width=50>"+itemFirstname+"</td>"+
                                      "<td name=‘lastname‘ width=50>"+itemLastname+"</td>"+
                                       "<td name=‘phone‘ width=50>"+itemPhone+"</td>"+
                                       "<td name=‘email‘ width=50>"+itemEmail+"</td>"+
                                  "</tr></table>";
                            tabStr += itemStr;
                    })
                    document.getElementById("divTab").innerHTML = tabStr; */
                    
                    } , error:function(data){
                        alert("加载数据失败!"+data);
                    }
                });
                // 关闭添加窗口
                $(#dlg).dialog(close);
            }
            
            function destroyUser(){
                var row = $(#dg).datagrid(getSelected);
                if (row){
                    $.messager.confirm(Confirm,Are you sure you want to destroy this user?,function(r){
                        if (r){
                            $.post(destroy_user.php,{id:row.id},function(result){
                                if (result.success){
                                    $(#dg).datagrid(reload);    // reload the user data
                                } else {
                                    $.messager.show({    // show error message
                                        title: Error,
                                        msg: result.errorMsg
                                    });
                                }
                            },json);
                        }
                    });
                }
            }
        </script>
    </body>
</html>

package com.wyebd.controller;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import com.alibaba.fastjson.JSON;
import com.wyebd.bean.Contract;
import com.zhuozhengsoft.pageoffice.OpenModeType;
import com.zhuozhengsoft.pageoffice.PageOfficeCtrl;
import com.zhuozhengsoft.pageoffice.wordwriter.WordDocument;

@RestController
public class ReadDataController {

    private static Logger log = Logger.getLogger(ReadOnlyController.class);
    private final String DB_URL = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
    private static final String USER = "root";
    private static final String PASS = "root";
    private static Connection con = null;
    private static PreparedStatement ps = null;
    private static Statement stmt = null;
    private static ResultSet rs = null;
    
    /**
     * 跳转至查询页面
     * @param request
     * @param response
     * @param map
     * @return
     */
    @RequestMapping(value = "/readData", method = RequestMethod.GET)
    public ModelAndView readData() {
        ModelAndView mv = new ModelAndView("readData");
        return mv;
    }
    
    /**
     * 保存
     * @param request
     * @param response
     * @param map
     * @return
     */
    @RequestMapping("saveInfo")
    public String saveInfo(HttpServletRequest request, HttpServletResponse response, Map<String, Object> map) {
        List<Contract> list = new ArrayList<Contract>();
        String firstname = request.getParameter("firstname");
        String lastname = request.getParameter("lastname");
        String phone = request.getParameter("phone");
        String email = request.getParameter("email");
        String json = null;
        int id = 0;
        try {
            getConnection();
            ps = con.prepareStatement("insert into test values (?,?,?,?,?)");
            ps.setInt(1, id);
            ps.setString(2, firstname);
            ps.setString(3, lastname);
            ps.setString(4,phone);
            ps.setString(5, email);
            ps.executeUpdate();
            log.info("添加成功");
            rs = stmt.executeQuery("select * from test");
            while(rs.next()){
                Contract con = new Contract();
                con.setFirstname(rs.getString("firstname"));
                con.setLastname(rs.getString("lastname"));
                con.setPhone(rs.getString("phone"));
                con.setEmail(rs.getString("email"));
                list.add(con);
            }
            // list转为json传入前端
            json = JSON.toJSONString(list);
            log.info(json);
            // 取得流向JSP传递数据
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().println(json);
            response.reset();
        } catch (Exception e) {
            log.info("SQLException: " + e.getMessage());
            e.printStackTrace();
        } finally {
            try {
                ps.close();
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
         return json;
    }

    /**
     * 连接数据库
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public void getConnection() throws ClassNotFoundException, SQLException {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(DB_URL, USER, PASS);
            stmt = con.createStatement();
        } catch (Exception e) {
            System.out.println("SQLException: " + e.getMessage());
            e.printStackTrace();
        }
    }
    
}

 

以上是关于ajax异步加载查询数据库的主要内容,如果未能解决你的问题,请参考以下文章

jquery ajax 调用kkpager插件 异步加载重新生成分页后,点击页数还是跟首次加载一样

ajax同步异步问题

Ajax异步加载后台数据(换页面,加强用户体验所用)

jquery的ajax同步和异步

前端面试题之手写promise

jquery的同步和异步