专栏首页魂祭心原 js页面传值参数打包类

原 js页面传值参数打包类

代码:

  var PageState = {
    MakeParams: function (valueState) {
        var params ={};
        var controlState={};
        //获取控件中的值
        var inputs = document.getElementsByClassName("controlKeep").getElementsByTagName("input");
        var selects = document.getElementsByClassName("controlKeep").getElementsByTagName("select");
        //制作json字符串
        for (var i = 0; i < inputs.length; i++) {
            if ($("#" + inputs[i].id).attr("type") == "text" || $("#" + inputs[i].id).attr("type") == "hidden") {
                controlState[inputs[i].id]=$("#" + inputs[i].id).val()
            }
            else if ($("#" + inputs[i].id).prop("type") == "checkbox") {
                if ($("#" + inputs[i].id).prop("checked") == true) {
                    param += "\"" + inputs[i].id + "\"" + ":" + "\"" + 1 + "\",";
                    controlState[inputs[i].id]=1;
                }
                else {  controlState[inputs[i].id]=-1;  }
            }
        }
        for (var j = 0; j < selects.length; j++) {
            controlState[selects[j].id]=selects[j].value;
        }
        params.controlState=controlState;
        params={
            "valueState":valueState
        }
        //返回json
        return JSON.stringify(params) ;
    },
    DecrizeParams: function (strJson) {
        var params =JSON.parse(strJson);
        for (var key in params.controlState) {
            var value=params[key]
            var obj = document.getElementById(key);
            //input类型值填充
            if (obj.nodeName.toLowerCase() == "input") {

                if (type = "text" || type == "hidden") {
                    $("#" + key).val(value);
                }
                if (type == "checkbox") {
                    if (value > 0)      //正数代表选择
                    { $("#" + key).prop("checked", true); }
                    else
                    { $("#" + key).prop("checked", false); }
                }
            }
            //select类型值填充
            if (obj.nodeName.toLowerCase() == "select") {
                var selectObj = document.getElementById(key);
                for (i = 0; i < selectObj.options.length; i++) {
                    var curOptObj = selectObj.options[i];
                    var value = curOptObj.value;
                    if (value == value) {
                        curOptObj.selected = true;
                    }
                }
            }

        }
        return params.valueState
     }
};

发送

     var parames= GoAndBackUrl.MakeParams({a:12,b:123});

解析

     var obj=backMsg.DecrizeParams();

这里是后台写入隐藏字段,页面load的时候获取字段解析,填充。

    这段代码只是div中的input和select两种控件,使用controlKeep标记,则可以搜集到controlstate这种,也可能存在js变量,可以组合成参数传入。

    读取的时候拿到数据调用DecrizeParams,返回的js变量的结合。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • btcd p2p 网络分析

    比特币依赖于对等网络来实现信息的共享与传输,网络中的每个节点即可以是客户端也可以是服务端,本篇文章基于比特币go版本btcd探索比特币对等网络的实现原理,整个实...

    魂祭心
  • 原 以太坊-rpc原理及实现

    魂祭心
  • 原 ObjectToJson实现

    魂祭心
  • picker-extend 移动端级联选择插件

    <h1 align="center" >picker-extend.js</h1>

    念念不忘
  • Python操作OpenOffice

    OpenOffice是一个免费的、开源的办公套装,集成了允许开发者用不同语言进行开发的API。Python-UNO让你可以在Python环境下使用OpenOff...

    小小科
  • Sqli_labs65关通关详解(下)

    less-31 逻辑跟30关一样,只不过 $id = '"' .$id. '"'; $sql="SELECT * FROM users WHERE id=($i...

    安恒网络空间安全讲武堂
  • Kafka 删除主题流程分析

    之前有个 Kafka 集群的每个节点的挂载磁盘多达 20+ 个,平均每个磁盘约 1T,每个节点的分区日志被平均分配到这些磁盘中,但由于每个分区的数据不一致,而集...

    张乘辉
  • 几点建议帮你写出简洁的JS代码

    Fundebug
  • 2-7 R语言基础 数据框

    > df <- data.frame(id=c(1,2,3,4),name=c("a","b","c","d"),gender=c(TRUE,TRUE,FALS...

    hankleo
  • SpringBoot 系列教程 Mybatis+xml 整合篇

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集...

    一灰灰blog

扫码关注云+社区

领取腾讯云代金券