zoukankan      html  css  js  c++  java
  • web前后端数据交互

      前后端数据交互是每一名web程序员必须熟悉的过程,前后端的数据交互重点在于前端是如何获取后端返回的数据,毕竟后端一般情况下只需要将数据封装到一个jsonMap,然后return就完了。下面通过一个list.js来说明后端是如何将数据传到前端,前端是如何获取数据,并进行数据展示的。

      

    /**
     * 列表方法
     * 1、列表页面显示列表内容的div容器ID为list_container
     * 2、列表页面模板区域textarea的ID为list_template
     * 3、列表页面显示列表页码下拉框的div容器ID为list_select
     * 4、列表页面选择页码到指定页的下拉框select的ID为list_goto
     * 5、列表页面检索按钮ID为list_button_query
     * 6、列表页面高级检索按钮ID为list_button_advsearch
     * 7、列表页面改变页面大小选择框ID为list_changepagesize
     * 8、列表页面当前页码隐藏表单的ID为list_pagenumber
     * 9、列表页面排序列隐藏表单的ID为list_sortcolumn
     * 10、列表页面检索form的ID为search
     * 11、列表页面功能form的ID为list
     * 
     * init 初始化参数,可自定义参数如下所示:
     * var nameSpace = "role";
     * {
     *     "nameSpace":nameSpace,
     *     "sortColumnId":["sortcolumn0","sortcolumn1","sortcolumn2"],
     *     "sortColumnValue":{"sortcolumn0":0,"sortcolumn1":1,"sortcolumn2":2},
     *     "listType":(0-常规列表(默认值),1-弹出层单选列表,2-弹出层复选列表,3-查看页面内嵌列表)
     * }
     * @author gongfan, zhouzj
     * @version 1.1
     * @depends 参考seajs文档,依赖模块在require中定义
     */
    define(function(require, exports, module) {
        require('form');
        require('tool/highcharts/highcharts');
        require.async('tool/highcharts/exporting');
        var json = {}; // 服务器端返回的json对象
        var data = []; // 客户端列表分页缓存对象
        var itemNumber;// 总记录数
        var pageSize;// 每页显示数
        var pageNumber;// 总页数
        var currentPageNo;// 当前页码
        var pageInfo;// 页面信息,总记录数、总页数等
        var pageSelect;// 页码输入框
        var pageBackNumber;// 服务器端返回的页数
        var startPageNumber;// 当前缓存区段的起始页码
        var dealWith;//附加处理函数
        var dealWithBefore;//用来对模版或数据进行处理
        var nameSpace;// URL前缀
        var selectedTab;//标签定位
        var sortColumnId;// 支持排序的列ID
        var sortColumnValue;// 排序列的值
        var listType;// (0-常规列表,1-弹出层单选列表,2-弹出层复选列表)
        var viewParam;//查看详情时向后台传的参数
        var truncateSettings;//截断显示设置
        
        /**
         * 字符串截断
         * string : 字符串
         * length : 截断长度(汉字为长度1;其它字符为长度0.5)
         * append : 补充串
        */
        var setTruncate = function(string, length, append){
            if(typeof s != "string" || !/^[1-9]d*$/.test("" + length)){return string;}
            var os = string, count = 0, sub = "";
            while(/[u4E00-u9FFF]/.test(string)){
                string = string.replace(/[u4E00-u9FFF]/, "");
                count++;
            }
            if(string.length/2 + count > length){
                var cnt = 0, len = 0;
                for(var i = 0; i < os.length; i++){
                    if(/[u4E00-u9FFF]/.test(os.charAt(i).toString())){
                        cnt += 2;                
                    } else {
                        cnt++;
                    }
                    len++;
                    if(cnt/2 >= length){
                        sub = os.substring(0, len) + ((append) ? append : "");
                        break;
                    }
                }
            } else {
                sub = os;
            }
            return sub;
        };
        // 截断显示
        var doTruncateShow = function(){
            if(!truncateSettings){return;}
            $(truncateSettings).each(function(){
                var $this = this;
                $("." + $this["className"]).each(function(){
                    var value = $(this).html().toString();
                    $(this).html(setTruncate(value, $this["length"], "..."))
                        .bind("mouseover", function(){
                            //$(this).html(value);
                            $(this).attr("title", value);
                        }).bind("mouseout", function(){
                            $(this).html(setTruncate(value, $this["length"], "..."));
                    });
                });
            });
        };
        var getData = function() {// 获取数据
            if (parent != null && listType == 0) {
                parent.loading_flag = true;
                setTimeout("parent.showLoading();", parent.loading_lag_time);
            }
            $("#list_first, #list_previous, #list_next, #list_last").attr("disabled", true);
            $("#search").submit();
        };
        var loadTemplate = function(listjson) {// 加载模板
            dealWithBefore(listjson, json);
            $("#list_container").hide();
            $("#list_container").html(TrimPath.processDOMTemplate("list_template", listjson));
            setOddEvenLine("list_container", listType);// 设置奇偶行效果
            if (typeof(listjson.root) == "undefined" || listjson.root.length == 0) {
                setColspan("list_table");// 设置空列表提示的跨列数
            }
            dealWith(json);
            $("#list_container").show();
            if (parent != null && listType == 0) {
                parent.loading_flag = false;
                parent.hideLoading();
            }
            if($("#checkedIds").length > 0){
                checkIds();
            }
        };
        var showPageNo = function() {// 加载页码及翻页按钮
            var tr = $("#list_container").find("table").eq(1).find("tr");// 列表最后一行
            // 生成总记录数、每页显示条数
            if (listType == 0) {
                pageInfo = $("<td align='right' style='color:#FFF;'></td>")
                $("<span class='text_white'>共</span>").appendTo(pageInfo);
                $("<span id='list_itemNumber'></span>").appendTo(pageInfo);
                $("<span>条&nbsp;</span>").appendTo(pageInfo);
                $("<span>每页</span>").appendTo(pageInfo);
                var pageSizeSelect = $("<select id='list_changepagesize'></select>");
                $("<option value='10'>10</option>").appendTo(pageSizeSelect);
                $("<option value='20'>20</option>").appendTo(pageSizeSelect);
                $("<option value='50'>50</option>").appendTo(pageSizeSelect);
                pageSizeSelect.appendTo(pageInfo);
                $("<span>条&nbsp</span>").appendTo(pageInfo);
                tr.append(pageInfo);
                $("#list_itemNumber").html(itemNumber);// 显示总记录数
                $("#list_changepagesize").attr("value", json.pageSize);// 设置页面表单,每页显示数
            }
            // 生成翻页
            tr.append($("<td width='24' align='center'><img id='list_first' src='image/first_page.gif' title='首页' class='to_page'/></td>"));
            tr.append($("<td width='24' align='center'><img id='list_previous' src='image/prev_page.gif' title='上一页' class='to_page'/></td>"));
            tr.append($("<td width='24' align='center'><img id='list_next' src='image/next_page.gif' title='下一页' class='to_page'/></td>"));
            tr.append($("<td width='24' align='center'><img id='list_last' src='image/last_page.gif' title='末页' class='to_page'/></td>"));
            tr.append($("<td class='text_white'></td>").append("<span>第</span>").append(pageSelect).append($("<span>/" + pageNumber + "</span>")).append("<span>页</span>"));
            var td = tr.find("td:last-child");// 根据内容确定最后一个单元格的宽度
            var goto_width = $("#list_goto").width();
            td.css("width", 38 + goto_width * 2 + "px");
            td.css("text-align", "left");
            $("#list_sortcolumn").attr("value", json.sortColumn);// 设置页面隐藏表单,当前排序
            if (pageNumber == 0) {
                $("#list_goto").attr("value", 0);// 设置到指定页表单
                $("#list_pagenumber").val(0);
            } else {
                $("#list_goto").attr("value", currentPageNo);// 设置到指定页表单
                $("#list_pagenumber").val(currentPageNo);
            }
            $(".session").each(function(){
                $(this).html(Num2Chinese(parseInt($(this).html())));
            });
            // 如是弹出层选择页面,则设置默认选中
            if($("#trimedName").size() > 0){
                defaultSelected();
            }
        };
        var showFirstPage = function() {// 首页
            if($("#checkedIds").length > 0){updateCheckedIds();}
            if (pageNumber != 0) {
                if (currentPageNo != 1) {
                    if (currentPageNo > data.length) {
                        currentPageNo = 1;
                        $("#list_pagenumber").attr("value", currentPageNo);
                        $("#search").attr("action", nameSpace + "/toPage.action");
                        getData();
                    } else {
                        currentPageNo = 1;
                        $("#list_pagenumber").attr("value", currentPageNo);
                        loadTemplate(data[0]);
                        showPageNo();
                    }
                }
            }
        };
        var showPreviousPage = function() {// 上页
            if($("#checkedIds").length > 0){updateCheckedIds();}
            if (pageNumber != 0) {
                if (currentPageNo != 1) {
                    currentPageNo--;
                    $("#list_pagenumber").attr("value", currentPageNo);
        //            if (currentPageNo % pageBackNumber == 0) {
                    if (currentPageNo < startPageNumber) {
                        $("#search").attr("action", nameSpace + "/toPage.action");
                        getData();
                    } else {
        //                loadTemplate(data[currentPageNo % pageBackNumber - 1]);
                        loadTemplate(data[currentPageNo - startPageNumber]);
                        showPageNo();
                    }
                }
            }
        };
        var showNextPage = function() {// 下页
            if($("#checkedIds").length > 0){updateCheckedIds();}
            if (pageNumber != 0) {
                if (currentPageNo != pageNumber) {
                    currentPageNo++;
                    $("#list_pagenumber").attr("value", currentPageNo);
                    if (currentPageNo >= startPageNumber + pageBackNumber) {
                        $("#search").attr("action", nameSpace + "/toPage.action");
                        getData();
                    } else {
                        loadTemplate(data[currentPageNo - startPageNumber]);
                        showPageNo();
                    }
                }
            }
        };
        var showLastPage = function() {// 末页
            if($("#checkedIds").length > 0){updateCheckedIds();}
            if (pageNumber != 0) {
                if (currentPageNo != pageNumber) {
                    currentPageNo = pageNumber;
                    $("#list_pagenumber").attr("value", currentPageNo);
                    if (startPageNumber + data.length - 1 < currentPageNo) {
                        $("#search").attr("action", nameSpace + "/toPage.action");
                        getData();
                    } else {
                        loadTemplate(data[data.length - 1]);
                        showPageNo();
                    }
                }
            }
        };
        var showGoTo = function() {// 到指定页
            if($("#checkedIds").length > 0){updateCheckedIds();}
            var oldPageNo = $("#list_pagenumber").val();
            currentPageNo = $("#list_goto").val();
            if (currentPageNo <= pageNumber && currentPageNo >= 1) {
                $("#list_pagenumber").attr("value", currentPageNo);
                if (currentPageNo >= startPageNumber && currentPageNo <= startPageNumber + data.length - 1) {
                    loadTemplate(data[currentPageNo - startPageNumber]);
                    showPageNo();
                } else {
                    $("#search").attr("action", nameSpace + "/toPage.action");
                    getData();
                }
            } else {
                $("#list_goto").val(oldPageNo);
            }
        };
        var showPageSize = function() {// 改变列表大小
            $("#list_pagesize").attr("value", $("#list_changepagesize").val());
            $("#search").attr("action", nameSpace + "/changePageSize.action");
            getData();
        };
        var showSort = function(sortColumn) {// 排序
            $("#list_sortcolumn").attr("value", sortColumn);
            $("#list_pagenumber").attr("value", $("#list_goto").val());
            $("#search").attr("action", nameSpace + "/sort.action");
            getData();
        };
        
        var Highch = function() {
            $.ajax({
                url: nameSpace + "/assist.action",
                 type: "post",
                 dataType: "json",
                 success: function(result) {
                     if (result.errorInfo == null || result.errorInfo == "") {
                         initHighcharts(result);
                     } else {
                         alert(result.errorInfo);
                     }
                     return false;
                 }    
            })
        };
        
        var showSimpleSearch = function() {// 检索
            var keyword = $("#keyword").val().trim();
            $("#keyword").val(keyword);
            $("#search").attr("action", nameSpace + "/simpleSearch.action");
            if($("#checkedIds").length > 0){//检索时要判断是否有checkedIds,如果有要清空
                $("#checkedIds").attr("value", "");
            };
            getData();
        };
        var showData = function() {// 显示数据
            itemNumber = json.totalRows;// 初始化总记录数
            pageBackNumber = json.pageBackNumber;// 初始化后台返回页数
            pageSize = json.pageSize;// 初始化每页显示数
            pageNumber = 0;// 初始化总页数
            if (itemNumber % pageSize == 0) {
                pageNumber = itemNumber / pageSize;
            } else {
                pageNumber = Math.floor(itemNumber / pageSize) + 1;
            }
            currentPageNo = json.pageNumber;// 初始化当前页码
            startPageNumber = json.startPageNumber;// 初始化当前缓存起始页码
            pageSelect = $("<input id='list_goto' type='text' style='" + getNumberLength(pageNumber) + "; height:14px; font-size:12px;' />");// 初始化页码下拉框
            var tmpdata = [];
            var startRow = (json.startPageNumber - 1) * pageSize;
            for (var i = 0, j = 0, k = 0; i < json.laData.length; i++) {
                if (!tmpdata[j]) {
                    tmpdata[j] = $.parseJSON('{"root": [], "sortColumn": -1, "sortColumnLabel": -1}');
                }
                var root = {"laData": [], "num": 0};
                root.laData = json.laData[i];
                root.num = startRow + (json.pageSize * j) + (k + 1);
                tmpdata[j].root[k] = root;
                tmpdata[j].sortColumn = json.sortColumn;
                tmpdata[j].sortColumnLabel = json.sortColumnLabel;
                k++;
                if (i % pageSize == pageSize - 1) {
                    j++;
                    k = 0;
                }
            }
            data = tmpdata;
            if (data.length > 0) {
                loadTemplate(data[currentPageNo - startPageNumber]);    // 加载初始页
            } else {
                data = $.parseJSON('{"root": [], "sortColumn": -1, "sortColumnLabel": -1}');
                data.sortColumn = json.sortColumn;
                data.sortColumnLabel = json.sortColumnLabel;
                loadTemplate(data);
            }
            showPageNo();
        };
        var optionssearch = {
            dataType: "json",
            success: function (result) {
                if (result.errorInfo == null || result.errorInfo == "") {
                    if (result.totalRows > 50) {
                        if(nameSpace.indexOf("project") != -1){
                            Highch();
                        }                    
                        $("#container").show();
                    } else {
                        $("#container").hide();
                    }
                    json = result;
                    showData();
                } else {
                    alert(result.errorInfo);
                }
                $("#list_first, #list_previous, #list_next, #list_last").attr("disabled", false);
            }
        };
        var initHighcharts = function(json) {
            $('#container').highcharts({
                chart : {
                    type : 'column'
                },
                title : {
                    text : null
                },
                subtitle: {
                    text: json.xTitle + '分布情况(前十条)'
                },
                xAxis : {
                    categories : json.lTitle,
                    title: {
                        text: json.xTitle,
                    }
                },
                yAxis : {
                    min : 0,
                    title : {
                        text : json.yTitle
                    }
                },
                legend: {
                    enabled: false
                },
                tooltip: {
                    valueSuffix: ' 条'
                },
                plotOptions : {
                    series : {
                        pointWidth : 50
                    },
                    column : {
                        pointPadding : 0.2,
                        borderWidth : 0
                    }
                },
                series : [ {
                    name : json.yTitle,
                    data : json.lData
                } ]
            });
        }    
        var optionslist = {
            dataType: "json",
            success: function (result) {
                if (result == undefined || result == null) {// 未知的错误异常
                    alert("未知的错误异常");
                } else if (result.errorInfo == null || result.errorInfo == "") {
                    $("#search").attr("action", nameSpace + "/toPage.action?update=1");
                    getData();
                } else {// 已知的错误异常
                    alert(result.errorInfo);
                }
                $("#list_first, #list_previous, #list_next, #list_last").attr("disabled", false);
            }
        };
        var getNumberLength = function(number) {// 根据数字的位数,确定输入框的宽度
            var strNumber = "" + number;
            var length = strNumber.length + 1;
            return 7 * length + "px";
        };
        var initPageShow = function(init) {
            // 参数预处理
            if(typeof(init.dealWith) == 'undefined'){
                dealWith = function(){};
            }else{
                dealWith = init.dealWith;
            }
            if(typeof(init.dealWithBefore) == 'undefined'){
                dealWithBefore = function(){};
            }else{
                dealWithBefore = init.dealWithBefore;
            }
            if (typeof(init.nameSpace) == 'undefined') {
                nameSpace = null;
            } else {
                nameSpace = init.nameSpace;
            }
            if (typeof(init.selectedTab) == 'undefined') {
                selectedTab = null;
            } else {
                selectedTab = init.selectedTab;
            }
            if (typeof(init.sortColumnId) == 'undefined') {
                sortColumnId = null;
            } else {
                sortColumnId = init.sortColumnId;
            }
            if (typeof(init.sortColumnValue) == 'undefined') {
                sortColumnValue = null;
            } else {
                sortColumnValue = init.sortColumnValue;
            }
            if (typeof(init.listType) == 'undefined') {
                listType = 0;
            } else {
                listType = init.listType;
            }
            if (typeof(init.viewParam) == 'undefined') {
                viewParam = null;
            } else {
                viewParam = init.viewParam;
            }
            if(typeof(init.truncateSettings) == 'undefined'){
                truncateSettings = null;
            } else {
                truncateSettings = init.truncateSettings;
            }
            $("#advSearch").submit(function() {
                $(this).ajaxSubmit(optionssearch);
                return false;
            });
            $("#search").submit(function() {// 提交ajax请求,返回列表数据
                $(this).ajaxSubmit(optionssearch);
                return false;
            });
    
            $("#list").submit(function() {
                $(this).ajaxSubmit(optionslist);
                return false;
            });
            getData();
            $("#check").live("click", function() {// 全选
                checkAll(this.checked, "entityIds");
            });
            $("#list_add").live("click", function() {// 添加按钮
                var url = basePath + nameSpace + "/toAdd.action?type=1"
                if(viewParam != null && viewParam.listflag != undefined){
                    url += "&listflag=" + viewParam.listflag;
                }
                window.location.href = url;
                return false;
            });
            $("#list_add_result").live("click", function() {// 项目中用到
                var url = basePath + nameSpace + "/toAddResult.action?type=1"
                if(viewParam != null && viewParam.listflag != undefined){
                    url += "&listflag=" + viewParam.listflag;
                }
                window.location.href = url;
                return false;
            });
            $("#list_delete").live("click", function() {// 删除按钮
                var cnt = count("entityIds");
                if (cnt == 0) {
                    alert("请选择要删除的记录!");
                } else {
                    if (confirm("您确定要删除选中的记录吗?")) {
                        if($("#checkedIds").length > 0){
                            $("#checkedIds").attr("value", "");
                        };
                        $("#type").attr("value", 1);
                        $("#pagenumber").attr("value", $("#list_goto").val());
                        $("#list").attr("action", nameSpace + "/delete.action");
                        $("#list").submit();
                    }
                }
                return false;
            });
            
            $("#list_funding").live("click", function() {// 批量拨款按钮
                var cnt = count("entityIds");
                if (cnt == 0) {
                    alert("请选择要拨款的记录!");
                } else {
                    if (confirm("您确定要对选中的记录拨款吗?")) {
                        if($("#checkedIds").length > 0){
                            $("#checkedIds").attr("value", "");
                        };
                        $("#type").attr("value", 1);
                        $("#pagenumber").attr("value", $("#list_goto").val());
                        $("#list").attr("action", nameSpace + "/funding.action");
                        $("#list").submit();
                    }
                }
                return false;
            });
            $(".link1").live("click", function(){// 点击进入查看页面
                //var url = basePath + nameSpace + "/toView.action?entityId=" + this.id + "&pageNumber=" + $("#list_pagenumber").val();
                var url = "";    //不再需要页码
                if(this.type == 8 || this.type == 10){//结项评审或者申请评审列表进入查看页面url
                    url = basePath + nameSpace + "/toViewReview.action?entityId=" + this.id;    //不再需要页码
                }else{
                    url = basePath + nameSpace + "/toView.action?entityId=" + this.id;    //不再需要页码
                }
                url += (this.type) ? "&listType=" + this.type : "";//(项目列表类型先如是判别)
                url += (selectedTab != null) ? "&selectedTab=" + selectedTab : "";
                if(viewParam != null && viewParam.listflag != undefined){
                    url += "&listflag=" + viewParam.listflag;
                }
                window.location.href = url;
                return false;
            });
            $("#list_button_query").bind("click", function() {// 初级检索
                showSimpleSearch();
                return false;
            });
            $("#list_search_more").click(function(){// 点击展开更多条件
                $("#adv_search").slideToggle("slow");
                $("#simple_search").hide();
                $(this).attr("value", "更多条件");
            });
            $("#list_search_hide").click(function(){// 点击收起更多条件
                $("#adv_search").slideToggle(50);
                $("#simple_search").show();
                $(this).attr("value", "隐藏条件");
            });
            if($("#advFlag").val() == 1){
                $("#adv_search").show();
                $("#simple_search").hide();
                $("#list_search_hide").attr("value", "隐藏条件");
            } else {
                $("#adv_search").hide();
                $("#simple_search").show();
                $("#list_search_more").attr("value", "更多条件");
            }
            $("#list_button_advSearch").live("click", function() {
                if (parent != null && listType == 0) {
                    parent.loading_flag = true;
                    setTimeout("parent.showLoading();", parent.loading_lag_time);
                }
                $("#advSearch").attr("action", nameSpace + "/advSearch.action");
                $("#advSearch").submit();
                return false;
            });
            $("#list_changepagesize").live("change", function() {// 改变每页显示条目数量
                showPageSize();
                return false;
            });
            $("#list_first").live("click", function() {// 首页
                showFirstPage();
                return false;
            });
            $("#list_previous").live("click", function() {// 上一页
                showPreviousPage();
                return false;
            });
            $("#list_next").live("click", function() {// 下一页
                showNextPage();
                return false;
            });
            $("#list_last").live("click", function() {// 末页
                showLastPage();
                return false;
            });
            $("#keyword").live("keypress", function(event) {// 给检索添加键盘事件,回车提交
                var keyCode = event.which;
                if (keyCode == 13) {
                    showSimpleSearch();
                    return false;
                } else {
                    return true;
                }
            });
            
            
            $("#list_goto").live("click", function(){// 点击选中页码,给换页绑定回车及弹出事件
                this.select();
            }).live("keypress", function(event) {
                var keyCode = event.which;
                if (keyCode == 13) {
                    showGoTo();
                    return false;
                } else {
                    return true;
                }
            }).live("blur", function(event) {
                showGoTo();
            });
            if (sortColumnId != null && sortColumnValue != null) {
                for (var i = 0; i < sortColumnId.length; i++) {
                    $("#" + sortColumnId[i]).live("click", function(){
                        showSort(sortColumnValue[this.id]);
                        return false;
                    });
                }
            }
            
            // 点击单个的checkbox时,维护全选框的状态
            $("input[name='entityIds']").live("click", function() {
                var checkbox_length = $("input[name='entityIds']").length;
                var cnt = count("entityIds");// 当前已选中的个数
                if (this.checked) {// 当有项被选中时,判断当前是否已全选了
                    if (cnt == checkbox_length) {
                        $("#check").eq(0).attr("checked", true);
                    }
                } else {// 当有项撤销选中时,判断头是否处于非全选状态
                    $("#check").eq(0).attr("checked", false);
                }
            });
        };
        
        /**
         * 将本页所选id和之前保存的id拼接并放入checkedIds隐藏域。
         * 在离开本页前需执行此方法。
         * @memberOf {TypeName} 
         */
        var updateCheckedIds = function(){
            var checkedIds = $("#checkedIds").val();
            $("input[name='entityIds']").each(function() {
                var idx = checkedIds.indexOf(this.value);
                if (this.checked && (idx == -1)) {// 选择不在隐藏域保存的id
                    checkedIds += $(this).val() + ",";
                } else if(!this.checked && (idx != -1)) {// 取消选择隐藏域中的id
                    var left = checkedIds.substring(0, idx);
                    var right = checkedIds.substring(idx);
                    checkedIds = left + right.substring(right.indexOf(",") + 1);
                }
            });
            $("#checkedIds").attr("value",checkedIds);
        };
        
        /**
         * 翻页(loadTemplate)之后将已选项勾选
         * @memberOf {TypeName} 
         */
        var checkIds = function(){
            var checkedIds = $("#checkedIds").val();
            $("input[name='entityIds']").each(function() {
                if (checkedIds.indexOf(this.value) != -1) {
                    this.checked = true;
                }
            });
        };
        
        module.exports = {
            pageShow: function(init) {initPageShow(init);},
            getData: function() {getData();},
            // 提供给一些模块的添加和删除按钮重写
            selectedTab: selectedTab,
            viewParam: viewParam
        };
        
    });

         首先,前端点击数据检索按钮;

    ——》执行showSimpleSearch()方法,该方法将检索关键字做简单去空格处理,同时指定后端要执行的action(这个一般在form表单中就有一次指定,此处做了双重指定);

    ——》执行getData()方法,设置加载超时,置灰列表按钮;

    ——》发送submit();

    ——》submit()方法将提交转换成jQuery的ajaxSubmit(optionsSearch),这个里面的optionsSearch参数很重要了,它是一个对象;

    ——》后台执行对应的action,将数据封装到一个jsonMap中,通过action对应的XML配置文件将数据返回给前端;

    ——》前端收到数据后,执行下面optionsSearch对象中的回调函数抓取数据,数据以result参数的形式被送到前端;

    ——》前端接收到数据后,执行showData()进行自定义的数据展示。

      这就是前后端数据交互的一个详细的完整流程。

  • 相关阅读:
    如何调试在OJ中的代码
    在linux命令行中调试在OJ上的c++代码
    jar包
    stanford core
    decode encode
    访问服务器,远程访问linux主机
    代码18
    删除列表中的元素
    if __name__ == '__main__'
    苹果要求全部新app以及版本号更新必须支持iOS 8 SDK和64-bit
  • 原文地址:https://www.cnblogs.com/pengineer/p/4763230.html
Copyright © 2011-2022 走看看