获取javascript从隐藏输入中提取数组值?

时间:2016-06-09 14:39:08

标签: javascript

如何从隐藏的输入字段中获取数组值并能够获取我需要的元素?

<input type="hidden" name="digital_object[prdcls][0][prdcl_links][0][_resolved]" id="digital_object[prdcls][0][prdcl_links][0][_resolved]" value="{&quot;id&quot;:&quot;/prdcl_titles/1&quot;,&quot;title&quot;:&quot;test (test)&quot;,&quot;primary_type&quot;:&quot;prdcl_title&quot;,&quot;types&quot;:[&quot;prdcl_title&quot;],&quot;json&quot;:&quot;{\&quot;lock_version\&quot;:0,\&quot;title\&quot;:\&quot;test (test)\&quot;,\&quot;publication\&quot;:\&quot;test\&quot;,\&quot;publisher\&quot;:\&quot;test\&quot;,\&quot;created_by\&quot;:\&quot;admin\&quot;,\&quot;last_modified_by\&quot;:\&quot;admin\&quot;,\&quot;create_time\&quot;:\&quot;2016-06-07T13:20:46Z\&quot;,\&quot;system_mtime\&quot;:\&quot;2016-06-07T13:20:46Z\&quot;,\&quot;user_mtime\&quot;:\&quot;2016-06-07T13:20:46Z\&quot;,\&quot;jsonmodel_type\&quot;:\&quot;prdcl_title\&quot;,\&quot;uri\&quot;:\&quot;/prdcl_titles/1\&quot;}&quot;,&quot;suppressed&quot;:false,&quot;publish&quot;:false,&quot;system_generated&quot;:false,&quot;repository&quot;:&quot;global&quot;,&quot;created_by&quot;:&quot;admin&quot;,&quot;last_modified_by&quot;:&quot;admin&quot;,&quot;user_mtime&quot;:&quot;2016-06-07T13:20:46Z&quot;,&quot;system_mtime&quot;:&quot;2016-06-07T13:20:46Z&quot;,&quot;create_time&quot;:&quot;2016-06-07T13:20:46Z&quot;,&quot;uri&quot;:&quot;/prdcl_titles/1&quot;,&quot;jsonmodel_type&quot;:&quot;prdcl_title&quot;}">

当我运行这个时,我为valp得到'undefined'。 我还有一个问题,即函数prdcl_link没有在正在创建或更改的隐藏字段上执行。

$( document ).ready(function() {
    $("#digital_object[prdcls][0][prdcl_links][0][_resolved]").on('keyup change', prdcl_link);
    $("#digital_object_prdcls__0__volume_num_").on('keyup change', prdcl_link);
    $("#digital_object_prdcls__0__issue_num_").on('keyup change', prdcl_link);

    function prdcl_link(){
        var valp = {};
        valp = $("#digital_object[prdcls][0][prdcl_links][0][_resolved]").val();
        console.log(valp);
        var valv = $("#digital_object_prdcls__0__volume_num_").val();
        var vali = $("#digital_object_prdcls__0__issue_num_").val();

        var res;
        var pub;
        var vol;
        var iss;

        if (valp!=""){
            pub = valp['json']['publication'];
            res = pub;
            if (valv!=""){
                vol = " - Volume " + valv;
                res = res.concat(vol);
            }
            if (vali!=""){
                if (valv!=""){
                    iss = ", Issue " + vali;
                }
                else {
                    iss = " - Issue " + vali;
                }
                res = res.concat(iss);
            }
        }


        $("#digital_object_title_").val(res);
   };
});

1 个答案:

答案 0 :(得分:0)

输入的值似乎是JSON格式,但是HTML编码。首先,您需要解码字符串。下划线具有en unescape功能,或者您可以搜索以找到其他方法。

然后您可以使用JSON.parse将其转换为javaScript对象。但是你有一个错误,所以它无法解析。名为&#39; json&#39;

的对象周围有一些额外的引号
...,"json":"{...}",...

如果您在括号内没有引号,则该引号有效。我认为这里发生的是&#39; json&#39;对象首先转换为JSON格式(字符串)。然后这个字符串是另一个对象的一部分,它也被转换为JSON。现在,无法区分哪些引用是什么的一部分。