web 表格撤销重做 脚本

//
// 陈日红 2016-10-28
// 
// 本脚本用于处理 排班导入功能中的 撤消和重做 操作 , 类似于 vs 的 撤销和重做
//

// @linkbutton_undo_id 界面[撤消]按钮ID
// @linkbutton_redo_id 界面[重做]按钮ID
function PaibanDaoruCls(linkbutton_undo_id, linkbutton_redo_id) {

    this.linkbutton_undo_id = (linkbutton_undo_id);
    this.linkbutton_redo_id = (linkbutton_redo_id);
    // 可记录操作数
    this.record_count = 5;
    // 剪切板(复制&剪切)
    this.clipboard = [];

    // 操作类型
    this.obj_operate = { apply: "apply", del: "delete", cut: "cut", copy: "copy", paste: "paste" };
    this.clipboard_tpye = this.obj_operate.copy;

    // 用于记录用户操作的数组
    this.arr_operate = [];

    // 用于记录用户操作的数据的数组(修正后台数据)
    this.arr_operate_data = [];

    // 用于记录用户操作的单元格的数组(修正界面)
    this.arr_operate_cell = [];

    // 实例类时,禁有撤销和重做按钮
    this.deal_linkbutton();

    // 指针索引
    this.pointer = -1;

    // 辐射源
    this.radiation_source = [];
}

PaibanDaoruCls.prototype.clear = function () {
    this.pointer = -1;
    this.arr_operate = [];
    this.arr_operate_data = [];
    this.arr_operate_cell = [];
    this.radiation_source = [];
    this.deal_linkbutton();
}

PaibanDaoruCls.prototype.deal_linkbutton = function () {
    var self = this;
    var code = self.arr_operate.length > 0 && self.pointer > -1 ? "enable" : "disable";
    $("#" + self.linkbutton_undo_id).linkbutton(code);
    code = self.pointer < self.arr_operate.length - 1 ? "enable" : "disable";
    $("#" + self.linkbutton_redo_id).linkbutton(code);
}

// 记录用户的操作
PaibanDaoruCls.prototype.push_operate = function (dowhat, data, cells) {
    var self = this;

    // 如果指针不是在最末(有撤销动作),则清理指标后面的动作
    if (self.pointer != self.arr_operate.length - 1) {
        for (var i = self.pointer + 1; i < self.arr_operate.length; i++) {
            self.arr_operate.pop();
            self.arr_operate_data.pop();
            self.arr_operate_cell.pop();
        }
    }

    self.arr_operate.push(dowhat);
    self.arr_operate_data.push(data);
    self.arr_operate_cell.push(cells);

    // 超过可记录操作数时,要清空前面的
    if (self.arr_operate.length > this.record_count) {
        for (var i = 0; i < (self.arr_operate.length - this.record_count); i++) {
            self.arr_operate.shift();
            self.arr_operate_data.shift();
            self.arr_operate_cell.shift();
        }
    }

    self.pointer = self.arr_operate.length - 1;
    self.deal_linkbutton();
}

// 单元格班次准允判断
PaibanDaoruCls.prototype.can_edit = function () {
    return 1;
}

// 撤销上一步
PaibanDaoruCls.prototype.undo = function () {
    var self = this;
    var operate = self.arr_operate[self.pointer];

    var callback = function () {
        self.pointer--;
        self.deal_linkbutton();
    };

    if (operate == self.obj_operate.apply) {
        self.undo_apply(callback);
    }
    else if (operate == self.obj_operate.del) {
        self.undo_delete(callback);
    }
    else if (operate == self.obj_operate.paste) {
        self.undo_paste(callback);
    }
}

// 重做下一步
PaibanDaoruCls.prototype.redo = function () {
    var self = this;


    var operate = self.arr_operate[self.pointer + 1];

    var callback = function () {
        self.pointer++;
        self.deal_linkbutton();
    };

    if (operate == self.obj_operate.apply) {
        self.redo_apply(callback);
    }
    else if (operate == self.obj_operate.del) {
        self.redo_delete(callback);
    }
    else if (operate == self.obj_operate.paste) {
        self.redo_paste(callback);
    }
}

// 点击剪切
PaibanDaoruCls.prototype.do_cut = function () {
    this.do_copy();

    this.clipboard_tpye = this.obj_operate.cut;
    this.do_delete();
};

// 点击复制
PaibanDaoruCls.prototype.do_copy = function () {
    var canedit = this.can_edit();
    if (canedit == 0) {
        return;
    }

    var self = this;
    self.clipboard = [];
    self.clipboard_tpye = self.obj_operate.copy;

    $(".selected-cell").each(function () {
        var $this = $(this);
        if (!$this.hasClass("day-cell")) return;
        self.clipboard.push($this.clone()); // 这里用的克隆(剪切会把界面破坏)
    });

};

// 点击粘贴
PaibanDaoruCls.prototype.do_paste = function () {

    var self = this;
    var arr_selected_cells = [];

    var copyArray = self.clipboard;
    var toArray = [];

    if (copyArray.length == 0) {
        alert("您没有复制(剪切)排班数据,请先复制(剪切)然后粘贴!");
        return;
    }

    var $pasteCell = $(".selected-cell");

    if ($pasteCell.size() == 0) {
        alert("请选择您需要粘贴的开始单元格");
        return;
    } else if ($pasteCell.size() > 1) {
        alert("不能有多个粘贴的开始单元格");
        return;
    }

    var pbrq = $pasteCell.attr("pbrq");

    var canedit = self.can_edit();
    if (canedit == 0) {
        return;
    }

    var int_row_gap = $pasteCell.attr("rowid") - copyArray[0].attr("rowid");
    var int_col_gap = $pasteCell.attr("day") - copyArray[0].attr("day");


    for (var m = 0; m < copyArray.length; m++) {
        var $from = copyArray[m];
        var day = parseInt($from.attr("day")) + int_col_gap;
        var rowid = parseInt($from.attr("rowid")) + int_row_gap;
        var $to = $("#td_" + rowid + "_" + day);

        if ($to.hasClass('waijie')) {
            continue;
        }

        if ($from.text() == "---") {
            continue;
        }

        if ($to.size() > 0) {

            var zgid1 = $("#" + copyArray[m].attr("id")).siblings(":first").attr("zgid");
            var pbrq1 = $("#" + copyArray[m].attr("id")).attr("pbrq");

            var zgid2 = $to.siblings(":first").attr("zgid");
            var pbrq2 = $to.attr("pbrq");
            var is_holiday = ($to.hasClass("holiday") || $to.hasClass("normalday")) ? 1 : 0;
            var bcids = $from.children("span").map(function () {
                if ($(this).attr("bcid") != "") {
                    return $(this).attr("bcid");
                }
            }).get().join(",");

            arr_selected_cells.push({ TOID: $to.attr("id"), FROM_HTML: $from.html(), TO_HTML: $to.html() });

            toArray.push({ FROM_ZGID: zgid1, TO_ZGID: zgid2, FROM_PBRQ: pbrq1, TO_PBRQ: pbrq2, BCIDS: bcids, HOLIDAY: is_holiday, TOID: $to.attr("id") });
        }
    }

    if (toArray.length == 0) {
        return;
    }

    var dataobj = { TOS: $.toJSON(toArray), KSID: $("#KSID").val(), PBRQ_START: $("#PBRQ_START").val(), PBRQ_END: $("#PBRQ_END").val() };
    self.push_operate(self.obj_operate.paste, dataobj);
    for (var p in arr_selected_cells) {
        var TOID = arr_selected_cells[p].TOID;
        var FROM_HTML = arr_selected_cells[p].FROM_HTML;
        $("#" + TOID).html(FROM_HTML);
    }
};

// 撤销粘贴
PaibanDaoruCls.prototype.undo_paste = function (callback) {
    var self = this;

    var dataobj = self.arr_operate_data[self.pointer];
    var cellarr = []; //self.arr_operate_cell[self.pointer];
    //TOS:[{FROM_ZGID: zgid1, TO_ZGID: zgid2, FROM_PBRQ: pbrq1, TO_PBRQ: pbrq2, BCIDS: bcids, HOLIDAY: is_holiday, TOID: td_id }]
    var tos = $.parseJSON(dataobj.TOS);
    var deletes = [];

    for (var i = 0; i < tos.length; i++) {
        deletes.push({ ZGID: tos[i].TO_ZGID, PBRQ: tos[i].TO_PBRQ });
        cellarr.push(tos[i].TOID);
    }

    var postdotaobj = { KSID: dataobj.KSID, PBRQ_START: dataobj.PBRQ_START, PBRQ_END: dataobj.PBRQ_END, DELETES: $.toJSON(deletes) }

    callback();
    for (var p in cellarr) {
        $("#" + cellarr[p]).empty();
    }
};

// redo 粘贴
PaibanDaoruCls.prototype.redo_paste = function (callback) {
    var self = this;

    var dataobj = self.arr_operate_data[self.pointer + 1];
    var cellarr = []; //self.arr_operate_cell[self.pointer + 1];

    callback();

    //TOS:[{FROM_ZGID: zgid1, TO_ZGID: zgid2, FROM_PBRQ: pbrq1, TO_PBRQ: pbrq2, BCIDS: bcids, HOLIDAY: is_holiday, TOID: toid }]
    var tos = $.parseJSON(dataobj.TOS);

    var dict = {};
    for (var i = 0; i < tos.length; i++) {
        var arrbcid = tos[i].BCIDS.split(',');
        for (var j = 0; j < arrbcid.length; j++) {
            var bcid = arrbcid[j];
            var bchtml = "";
            if (dict[bcid]) {
                bchtml = dict[bcid];
            } else {
                bchtml = self.get_bcid_html(bcid);
                dict[bcid] = bchtml;
            }

            if (j == 0) {
                $("#" + tos[i].TOID).empty().append(bchtml);
            } else {
                $("#" + tos[i].TOID).append(bchtml);
            }
        }
    }
};

// 点击删除
PaibanDaoruCls.prototype.do_delete = function () {

    var canedit = this.can_edit();
    if (canedit == 0) {
        return;
    }

    var self = this;
    var arr_selected_cells = [];
    var deleteArray = new Array();
    var undoDeleteArray = [];
    var undoDeleteCells = [];

    $(".selected-cell").each(function () {
        var $this = $(this);
        if (!$this.hasClass("day-cell")) return;

        var pbrq = $this.attr("pbrq");
        var is_holiday = ($this.hasClass("holiday") || $this.hasClass("normalday")) ? 1 : 0;
        var pbrq = $this.attr("pbrq");
        var zgid = $this.siblings(":first").attr("zgid");

        arr_selected_cells.push($this);
        undoDeleteCells.push($this.clone());

        $this.find("span").each(function (i, span) {
            var bcid = span.getAttribute("bcid");
            undoDeleteArray.push({ ZGID: zgid, PBRQ: pbrq, BCID: bcid, PXXH: i + 1, HOLIDAY: is_holiday });
        });

        deleteArray.push({ ZGID: zgid, PBRQ: pbrq });
    });
    if (deleteArray.length == 0) {
        return;
    }

    var dataobj = { KSID: $("#KSID").val(), PBRQ_START: $("#PBRQ_START").val(), PBRQ_END: $("#PBRQ_END").val(), INSERTS: $.toJSON(undoDeleteArray), UPDATES: $.toJSON([]) };
    self.push_operate(self.obj_operate.del, dataobj, undoDeleteCells);
    for (var p in arr_selected_cells) {
        var $cell = arr_selected_cells[p];
        if ($cell.html().indexOf(">---<") < 0)
            $cell.empty();
    }
};

// 撤销删除
PaibanDaoruCls.prototype.undo_delete = function (callback) {
    var self = this;

    var dataobj = self.arr_operate_data[self.pointer];
    var cellarr = self.arr_operate_cell[self.pointer];
    dataobj.undodelete = "1";
    callback();
    for (var p in cellarr) {
        $("#" + cellarr[p].attr("id")).html(cellarr[p].get(0).innerHTML)
    }
}

// redo 删除
PaibanDaoruCls.prototype.redo_delete = function (callback) {
    var self = this;

    var dataobj = self.arr_operate_data[self.pointer + 1];
    var cellarr = self.arr_operate_cell[self.pointer + 1];

    var inserts = $.parseJSON(dataobj.INSERTS);
    var postdotaobj = { KSID: dataobj.KSID, PBRQ_START: dataobj.PBRQ_START, PBRQ_END: dataobj.PBRQ_END, DELETES: dataobj.INSERTS }
    callback();

    for (var p in cellarr) {
        $("#" + cellarr[p].attr("id")).empty();
    }
};

// 点击应用
PaibanDaoruCls.prototype.do_apply = function () {

    var canedit = this.can_edit();
    if (canedit == 0) {
        return;
    }

    var self = this;
    // 选中的单元格
    var arr_selected_cells = [];
    // 将要写入的班次
    var arr_insert = [];
    // 将要编辑的班次(会更新修改人修改日期)[比如班次A应用到含有班次A的单元格中,这条数据将会进入编辑]
    var arr_update = [];

    var bcid = $("#BCID").val();

    $(".selected-cell").each(function () {
        var $this = $(this);

        if (!$this.hasClass("day-cell")) return true;

        arr_selected_cells.push($this);

        var is_holiday = ($this.hasClass("holiday") || $this.hasClass("normalday")) ? 1 : 0;
        var pbrq = $this.attr("pbrq");
        var zgid = $this.siblings(":first").attr("zgid");

        if ("---" == $this.text()) {
            // "---" 一般是调走了的,注销了的
            return true;
        }

        // 双击(应用)单元格前,格子里就有的班次,存到 数组 arr_exist_bcid 中
        var arr_exist_bcid = [];
        var bcspan = $this.children("span");
        if (bcspan.length > 0) {
            bcspan.each(function (i, n) {
                var bcspan_bcid = n.getAttribute("bcid");
                if (bcspan_bcid) {
                    arr_exist_bcid.push(bcspan_bcid);
                }
            });
        }

        if (arr_exist_bcid.length > 0) {
            if (arr_exist_bcid.join(",").indexOf(bcid) >= 0) {
                for (var m = 0; m < arr_exist_bcid.length; m++) {
                    if (arr_exist_bcid[m] == bcid) {
                        // 应用的班次如果存在于单元格中,写进 编辑数组 arr_update 中 ,需要注意的是 PXXH 不能保存错
                        arr_update.push({ ZGID: zgid, PBRQ: pbrq, BCID: bcid, PXXH: m + 1 });
                    }
                }
            } else {
                arr_insert.push({ ZGID: zgid, PBRQ: pbrq, BCID: bcid, PXXH: arr_exist_bcid.length + 1, HOLIDAY: is_holiday });
            }
        } else {
            arr_insert.push({ ZGID: zgid, PBRQ: pbrq, BCID: bcid, PXXH: 1, HOLIDAY: is_holiday });
        }
    });

    if (arr_insert.length == 0 && arr_update.length == 0) {
        return;
    }

    var dataobj = { KSID: $("#KSID").val(), PBRQ_START: $("#PBRQ_START").val(), PBRQ_END: $("#PBRQ_END").val(), INSERTS: $.toJSON(arr_insert), UPDATES: $.toJSON(arr_update) };
    self.push_operate(self.obj_operate.apply, dataobj, arr_selected_cells);
    self.fixed_cell(bcid, arr_selected_cells);
};

// redo 应用
PaibanDaoruCls.prototype.redo_apply = function (callback) {
    var self = this;

    var dataobj = self.arr_operate_data[self.pointer + 1];
    var cellarr = self.arr_operate_cell[self.pointer + 1];

    var inserts = $.parseJSON(dataobj.INSERTS);
    var bcid = inserts[0].BCID;

    callback();
    self.fixed_cell(bcid, cellarr);
};

// 撤销应用
PaibanDaoruCls.prototype.undo_apply = function (callback) {
    var self = this;

    var dataobj = self.arr_operate_data[self.pointer];
    var cellarr = self.arr_operate_cell[self.pointer];

    callback();
    for (var p in cellarr) {
        var $cell = cellarr[p];
        if ("---" == $cell.text()) {
            // "---" 一般是调走了的,注销了的
            continue;
        }

        var cell_html = "";
        var bcspan = $cell.children("span");
        if (bcspan.length > 0) {
            bcspan.each(function (i, n) {
                if (i < bcspan.length - 1) {
                    if (i > 0) { cell_html + "/"; }
                    cell_html += n.outerHTML;
                }
            });
            $cell.html(cell_html);
        }
    }
}

// 互换班次
PaibanDaoruCls.prototype.exchange = function () {
    var sels = [];
    $(".selected-cell").each(function () {
        if ($(this).hasClass("day-cell")) {
            sels.push($(this));
        }
    });

    if (sels.length > 2) {
        alert('只能在两个选中的单元格之间互换');
        return;
    } else if (sels.length < 2) {
        alert('请按住ctrl选中要互换班次的单元格');
        return;
    }

    var self = this;
    var cell1 = $(sels[0]), cell2 = $(sels[1]);
    var arr1 = [], arr2 = [];
    var bcid1 = [], bcid2 = []

    cell1.children("span").each(function (i, span) {
        arr1.push(span.getAttribute("bcid"));
        bcid1.push(span.getAttribute("bcid"));
    });
    cell2.children("span").each(function (i, span) {
        arr2.push(span.getAttribute("bcid"));
        bcid2.push(span.getAttribute("bcid"));
    });
    if (cell1.children("span").length == cell2.children("span").length) {
        if (arr1.sort().join(",") == arr2.sort().join(",")) {
            alert('无效的互换');
            return;
        }
    }

    var zgid1 = cell1.siblings(":first").attr("zgid");
    var zgid2 = cell2.siblings(":first").attr("zgid");
    var pbrq1 = cell1.attr("pbrq");
    var pbrq2 = cell2.attr("pbrq");
    var ksid = $("#KSID").val();
    var is_holiday1 = (cell1.hasClass("holiday") || cell1.hasClass("normalday")) ? 1 : 0;
    var is_holiday2 = (cell2.hasClass("holiday") || cell2.hasClass("normalday")) ? 1 : 0;

    var clone1 = cell1.clone();
    var clone2 = cell2.clone();
    cell1.html(clone2.html());
    cell2.html(clone1.html());

    // 交换后,不许再撤销
    self.clear();

}

// 班次的html代码
PaibanDaoruCls.prototype.get_bcid_html = function (bcid) {
    if (bcid == "" || bcid == undefined) {
        return "";
    }
    var option = $("#BCID").children("option[value='" + bcid + "']");
    var qjs = option.css("color");
    var bjs = option.css("background-color");
    var bcmc = option.attr("bcmc");
    var bcjc = option.attr("bcjc");
    bcmc = bcjc;
    return "<span id='--" + bcid + "--' bcid='" + bcid + "' user_id='$0$' onmouseover='over_bc();' onmouseout='out_bc()' oncontextmenu='contextMenuClick()' ondblclick='dbclick_bc()' style='cursor:pointer;color:" + qjs + ";background-color:" + bjs + "'>" + bcmc + "</span>";
}

// 双击和应用班次成功后,将界面修补完整
PaibanDaoruCls.prototype.fixed_cell = function (bcid, arr_selected_cells) {

    var self = this;

    var bc_html = self.get_bcid_html(bcid)

    for (var p in arr_selected_cells) {

        var $cell = arr_selected_cells[p];
        if ("---" == $cell.text()) {
            // "---" 一般是调走了的,注销了的
            continue;
        }

        var arr_exist_bcid = [];
        var bcspan = $cell.children("span");
        if (bcspan.length > 0) {
            bcspan.each(function (i, n) {
                var bcspan_bcid = n.getAttribute("bcid");
                if (bcspan_bcid) {
                    arr_exist_bcid.push(bcspan_bcid);
                }
            });
        }

        if (arr_exist_bcid.length > 0) {
            if (arr_exist_bcid.join(",").indexOf(bcid) >= 0) {
                continue;
            } else {
                $cell.append("/" + bc_html);
            }
        } else {
            $cell.append(bc_html);
        }
    }
};

// 辐射班次
PaibanDaoruCls.prototype.radiation = function () {
    // 选中一个有班次的单元格
    // 点击 辐射 按钮 启动辐射功能
    // 即 单击单元格击应用辐射源的班次

    var self = this;
    var bflagdwon = $("#btnFlag").hasClass("pbtn-down");
    if (!bflagdwon) {
        return;
    }
    if (self.radiation_source.length == 0) {
        return;
    }

    var canedit = this.can_edit();
    if (canedit == 0) {
        return;
    }

    // 选中的单元格
    var arr_selected_cells = [];
    // 将要写入的班次
    var arr_insert = [];
    // 将要编辑的班次(会更新修改人修改日期)[比如班次A应用到含有班次A的单元格中,这条数据将会进入编辑]
    var arr_update = [];

    //var bcid = $("#BCID").val();
    // 辐射源的bcid数组
    var arr_radiation_bcid = [];
    self.radiation_source[0].children("span").each(function (a, b) {
        arr_radiation_bcid.push(b.getAttribute("bcid"));
    });

    var radiation_zgid = self.radiation_source[0].siblings(":first").attr("zgid");
    var radiation_pbrq = self.radiation_source[0].attr("pbrq");

    $(".selected-cell").each(function () {
        var $this = $(this);

        if (!$this.hasClass("day-cell")) return true;

        //过滤辐射源
        if ($this.attr("id") == self.radiation_source[0].attr("id")) return true;

        arr_selected_cells.push($this);

        var is_holiday = ($this.hasClass("holiday") || $this.hasClass("normalday")) ? 1 : 0;
        var pbrq = $this.attr("pbrq");
        var zgid = $this.siblings(":first").attr("zgid");

        if ("---" == $this.text()) {
            // "---" 一般是调走了的,注销了的
            return true;
        }

        // 双击(应用)单元格前,格子里就有的班次,存到 数组 arr_exist_bcid 中
        var arr_exist_bcid = [];
        var bcspan = $this.children("span");
        if (bcspan.length > 0) {
            bcspan.each(function (i, n) {
                var bcspan_bcid = n.getAttribute("bcid");
                if (bcspan_bcid) {
                    arr_exist_bcid.push(bcspan_bcid);
                }
            });
        }

        for (var u = 0; u < arr_radiation_bcid.length; u++) {
            var bcid = arr_radiation_bcid[u];
            if (arr_exist_bcid.length > 0) {
                if (arr_exist_bcid.join(",").indexOf(bcid) >= 0) {
                    for (var m = 0; m < arr_exist_bcid.length; m++) {
                        if (arr_exist_bcid[m] == bcid) {
                            // 应用的班次如果存在于单元格中,写进 编辑数组 arr_update 中 ,需要注意的是 PXXH 不能保存错
                            arr_update.push({ ZGID: zgid, PBRQ: pbrq, BCID: bcid, PXXH: m + 1 });
                        }
                    }
                } else {
                    arr_insert.push({ ZGID: zgid, PBRQ: pbrq, BCID: bcid, PXXH: arr_exist_bcid.length + 1, HOLIDAY: is_holiday });
                }
            } else {
                arr_insert.push({ ZGID: zgid, PBRQ: pbrq, BCID: bcid, PXXH: 1, HOLIDAY: is_holiday });
            }
        }
    });

    if (arr_insert.length == 0 && arr_update.length == 0) {
        return;
    }

    var dataobj = { KSID: $("#KSID").val(), PBRQ_START: $("#PBRQ_START").val(), PBRQ_END: $("#PBRQ_END").val(), INSERTS: $.toJSON(arr_insert), UPDATES: $.toJSON(arr_update) };
    dataobj.radiation_zgid = radiation_zgid;
    dataobj.radiation_pbrq = radiation_pbrq;

    self.push_operate(self.obj_operate.apply, dataobj, arr_selected_cells);

    for (var u = 0; u < arr_radiation_bcid.length; u++) {
        self.fixed_cell(arr_radiation_bcid[u], arr_selected_cells);
    }
};

PaibanDaoruCls.prototype.doimport = function () {
    var table = document.getElementById("Grid1");
    var postjson = [];

    for (var i = 1; i < table.rows.length; i++) {
        var cells = table.rows[i].cells;

        var obj = {
            zgid: cells[1].innerText,
            arr_pbbc: []
        };

        for (var j = 4; j <= 10; j++) {
            var cell = cells[j];

            var childnodes = cell.childNodes;
            var arrbc = [];
            for (var k = 0; k < childnodes.length; k++) {
                if (childnodes[k].tagName == "SPAN" && childnodes[k].getAttribute("bcid")) {
                    arrbc.push(childnodes[k].getAttribute("bcid"));
                }
            }
            obj.arr_pbbc.push(arrbc.join(","));
        }

        postjson.push(obj);
    }

    var jsonstr = $.toJSON(postjson);
    var ksid = document.getElementById("KSID").value;
    var pbrq = document.getElementById("IMPPBRQ").value;
    var rypx = document.getElementById("ckbox_saveordernum").checked ? 1 : 0;
 
    $.post("../../hr/paibandaoru/doimp", { jsonstr: jsonstr, ksid: ksid, pbrq: pbrq, rypx: rypx }, function (msg) {
        alert(msg.msg);
    });
};

 

转载于:https://my.oschina.net/chenrh/blog/878032

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值