我有一个 json,它有一个键“标签”,它返回这样的数据 "tags": "jname,gender,city"
但我想将这些值附加到单独的范围内,如下所示
<div class="info">
<span>jname</span><span>gender</span><span>city</span>
</div>
我正在尝试这个
$.getJSON("data.json", function(tagsposts) {
var items = [];
splitsVal = tag.split(",");
for (var i = 0; i < splitsVal.length; i++) {
obj.push({name:splitsVal[i]});
obj[i] = '<span>' + obj[i] + '</span>';
$('.tags-div').append(obj[i])
}
$.each(tagsposts, function(key, val) {
items.push('<a href="#">' + val['tags'] + '</a>');
});
$('#tagsposts').append(items.join(""));
});
我做得对吗
最佳答案
您正在尝试拆分 undefined variable :
function(tagsposts) {
var items = [];
splitsVal = tag.split(","); // but tag doesn't exist...
(如果你查看你的浏览器控制台,你应该养成这样做的习惯,你会得到一个非常清楚的消息,说明为什么这不起作用:“ReferenceError:找不到变量:标签”。 )
由于您尚未提供 JSON,因此无法确切说明如何解决此问题。假设完整的 JSON 格式为
{"tag": "foo,bar,baz"}
那么你会想要
splitsVal = tagsposts.tag.split(",")
如果 JSON 中的结构比 JSON 中的结构更多,您将需要向下爬过该已解析对象以找到您需要的“标签”值。
然而,这里还有很多其他问题。
您还尝试推送到名为 obj
的未定义数组;在 for
循环之外至少需要一个 var obj = []
。虽然不清楚您为什么要使用 obj
,或者试图将对象 {name: val}<
绘制到 DOM 而不仅仅是值。你要做的只是阅读 splitsVal[i]
所以你可以这样做:
for (var i = 0; i < splitsVal.length; i++) {
$('.tags-div').append('<span>'+splitsVal[i]+'</span>')
}
并且在生成 #tagsposts
内容时,您尝试遍历 tagsposts
,就好像它是一个数组一样。 (您的 JSON 是数组吗?如果是这样,您还需要在获取 tag
值时对其进行迭代。)
关于javascript - 使用逗号分割json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46978016/