如果我dataType = 'JSON'
通过AJAX得到这个:如何获得嵌套的响应值?
[{"extras": {"tags": "[<Tag: tag1>, <Tag: tag2>]"}}]
如何我可以创建像这样的链接:
<a href="tag/ + value.extras.tags.tag1">tag1</a>
<a href="tag/ + value.extras.tags.tag2">tag2</a>
?
如果我dataType = 'JSON'
通过AJAX得到这个:如何获得嵌套的响应值?
[{"extras": {"tags": "[<Tag: tag1>, <Tag: tag2>]"}}]
如何我可以创建像这样的链接:
<a href="tag/ + value.extras.tags.tag1">tag1</a>
<a href="tag/ + value.extras.tags.tag2">tag2</a>
?
var tags = data[0].extras.tags.replace(/[\[\]]/g, '').split(', ');
$.each(tags, function(i,v){
var tag = v.match(/<Tag:\s(.*)>/);
if(tag !== null){
var href = 'tag/';
// <a href="tag/tag1">tag1</a>
var $link = $('<a/>').attr('href', href+tag[1]).text(tag[1]);
$('#myDiv').append($link);
}
});
注意:我建议您遵循@ jfriend00的建议,并更改JSON的结构。无论如何,我会在这里留下它,因为它适用于你所拥有的数据。
但是我怎样才能将这个链接添加到例子'div'?在'var $ link = $('').attr('href',href + tag [1])。text(tag [1]);'我尝试'$('div')之后。append($ link)'和'alert($ link)'但是我得到'$ link没有定义'所以如果我需要在指定$ link之后追加每个$ link到div,我该怎么做? – krzyhub
@Cris:'$('#myDiv')。append($ link)'应该可以工作。我测试了这个代码,'console.log($ link)'对我来说工作正常。 –
您有完整的权利。我的错。谢谢。 – krzyhub
您的JSON数据对我没有任何意义。你已经基本上得到了这个:
jsonObj[0].extras.tags
为一个字符串值,等于这个:
"[<Tag: tag1>, <Tag: tag2>]"
因此,为了使该字符串的任何意义,就必须手动解析,它的不清楚你的问题究竟是你想从这个字符串中创建到标签中。
我建议你将你想要的实际数据放到它自己的JSON值中,而不是把你的数据全部放在一个字符串中,然后再次解析。
如果你想澄清这个问题,我们可以帮助更多。
基于其他意见,我想你想你的JSON是这个所以无需手动分析,所有数据将进入实际的JavaScript对象:
[{"extras": {"tags": ["tag1", "tag2"]}}]
然后,你可以做这样的循环访问变量值:
var tagArray = jsonObj[0].extras.tags;
for (var i = 0; i < tagArray.length; i++) {
var tagVal = tagArray[i];
// do what you want here with tagVal
}
如果你的JSON第一阵列可以有多个元素,它和你想看到所有的人,那么你可以遍历它们太:
var tagArray;
for (var j = 0; j < jsonObj.length; j++) {
tagArray = jsonObj[j].extras.tags;
for (var i = 0; i < tagArray.length; i++) {
var tagVal = tagArray[i];
// do what you want here with tagVal
}
}
你确定你希望href实际上是'tag/+ value.extras.tags.tag1',还是你希望它是'tag/tag1'? –
这不是一个“真正的”JSON对象 - 括号内的双引号和<...>而不是{...}意味着您必须编写自己的解析器。 – Blazemonger
'tag/tag1'就是我想要的 – krzyhub