我在这里加了一点>
我的php脚本返回此JSON(在变量响应中)(带有json_encode的编码数组):
{"1":{"id":"pvv001","tooltip":"tip1","link":"http:\/\/domain\/file1.html"},"2":{"id":"pvv002","tooltip":"tip2","link":"http:\/\/domain\/file2.html"}}
我希望这是有效的JSON对象......
然后这里是JavaScript函数,它应该得到这个字符串并处理它 - 加载到ELEMENT“id”一个“链接”的内容。
function jLinks(idchapter)
{
var url = 'ajax_loadlinks.php';
var data = {
idchapter : idchapter
};
$.post(url,data, function(response)
{
//$('#coursecontent').html(response);
var obj = JSON.parse(response);
for (var i=0; i<obj.length; i+1)
{
$('#'+obj[i].id).html('<a href="'+obj[i].link+'">link</a>');
}
});
}
它不会在浏览器或控制台中引发任何错误,但元素根本不会更新。
我问我解析并以某种方式访问数据是错误的,但我不知道如何调试。
答案 0 :(得分:4)
由于您的字符串为object
而不是array
,因此您需要使用$.each方法遍历每个key
对象。
var obj ={
"1": {
"id": "pvv001",
"tooltip": "tip1",
"link": "http:\/\/domain\/file1.html"
},
"2": {
"id": "pvv002",
"tooltip": "tip2",
"link": "http:\/\/domain\/file2.html"
}
};
$.each(obj,function(i,v){
$('#'+v.id).html('<a href="'+v.link+'">link</a>');
});
<强> Fiddle 强>
答案 1 :(得分:0)
请试试这个
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
console.log(obj[prop].id);
$('#'+obj[prop].id).html('<a href="'+obj[prop].link+'">link</a>');
}
}