Jquery 使用JSON数组键或值填充html模式

Jquery 使用JSON数组键或值填充html模式,jquery,json,Jquery,Json,我有一个非常简单的问题,很惊讶我还没有弄明白。我错过了什么?我通过json编码得到一个php数组: var curr_op = <?php echo json_encode($options) ?>; 我只想通过以下方式将键(或值)传递给html: $('#modal-body span2').html(JSON.stringify(curr_op)); 这给了我一个丑陋的东西: {" ":" ","Tangential-S1":"Tangential-S1","Diagonal

我有一个非常简单的问题,很惊讶我还没有弄明白。我错过了什么?我通过json编码得到一个php数组:

var curr_op = <?php echo json_encode($options) ?>;
我只想通过以下方式将键(或值)传递给html:

$('#modal-body span2').html(JSON.stringify(curr_op));
这给了我一个丑陋的东西:

{" ":" ","Tangential-S1":"Tangential-S1","Diagonal-Q1":"Diagonal-Q1","addnew":"Add New"}
在我的网页上。我如何清理这些内容并只传递以下内容:

切线-S1,对角线-Q1


到html(请注意,第一个和最后一个元素也应该删除)。

如果您想在javascript中解码JSON,请编写如下内容:

var decoded_json = $.parseJSON(curr_op);    
$('#modal-body span2').html(decoded_json.Tangential-S1 + ', ' + decoded_json.Diagonal-Q);

这里有一把小提琴可以玩:


你会一直有这样的结构吗?仅供参考,这与JSON无关。在JavaScript脚本中,
curr\u op
是一个对象。但更大的问题是:对象属性不是有序的。不能谈论对象的“last”或“first”属性。不同的浏览器可能以不同的顺序对其进行迭代。如果您只需要特定的密钥,我建议您在服务器端创建一个仅包含这些密钥的数组。如果您知道要删除的属性的名称,那么有一个解决方案。但事实果真如此吗?或者以另一种方式询问,您希望使用什么“规则”来过滤属性?谢谢您的回答。下面的答案解决了这个问题@费利克斯·金:我想这就是为什么这个问题的答案对我不起作用。即使我是json编码,curr_op不是json对象吗?我仍然发现JSON、ajax和jQuery对于所有这些数据类型都非常棘手,希望通过更多的使用它会变得清晰。。即使您在PHP脚本中使用
json\u decode
来序列化一些数据,在JavaScript脚本中,您最终会得到类似
var curr\u op={“foo”:“bar”}这是一个对象文字(它创建了一个对象)。JSON看起来非常类似(因为它的语法受JS的对象文字语法的启发),但它独立于JS。JSON是一种数据交换格式,类似于XML或CSV。这只是一种将数据描述为文本的方法。当我这样做时,第一行返回空值。哦,抱歉,这没有帮助。然后你应该发布你的代码,我在我的项目中使用它的条件和你一样(用PHP编码,用javascript解码),它工作起来很有魅力。太棒了!谢谢你的帮助!差不多就是这样。细节中总有魔鬼。。。。
var decoded_json = $.parseJSON(curr_op);    
$('#modal-body span2').html(decoded_json.Tangential-S1 + ', ' + decoded_json.Diagonal-Q);
function getPropsAsString(curr_op) {        
    var props = [];
    for (prop in curr_op) {
        var value = curr_op[prop];

        // filter them by some logic
        if (value === " " || value === "Add New")
            continue; // skip it

        props.push(prop);
    }

    // do whatever you want with the properties
    props.sort(); // maybe you want to sort them?

    return props.join(", ");
}

$('#modal-body span2').html( getPropsAsString(curr_op) );