我有一个json,它有一个键“tag”,它返回这样的数据 “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(""));
});
我做得对吗
答案 0 :(得分:1)
您正在尝试拆分未定义的变量:
function(tagsposts) {
var items = [];
splitsVal = tag.split(","); // but tag doesn't exist...
(如果你看一下你应该习惯做的浏览器控制台,你会得到一个非常明确的信息,说明为什么这不起作用:&#34; ReferenceError:Can&# 39;找到变量:tag&#34;。)
由于您还没有提供JSON,因此无法准确说明如何解决此问题。假设完整的JSON格式为
{"tag": "foo,bar,baz"}
然后你想要
splitsVal = tagsposts.tag.split(",")
如果结构比JSON内的结构更多,那么您需要向下爬过该解析对象以找到&#34;标记&#34;你需要的价值。
然而,这里还有很多其他问题。
您还尝试推送名为obj
的未定义数组;您至少需要在var obj = []
循环之外for
。虽然不清楚为什么你根本使用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
值时迭代它。)