Jquery 使用JSON数组键或值填充html模式
我有一个非常简单的问题,很惊讶我还没有弄明白。我错过了什么?我通过json编码得到一个php数组: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
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) );