Reputation: 5
I stucked a little bit in here>
My php script returns this JSON (in variable response) (encoded array with json_encode) :
{"1":{"id":"pvv001","tooltip":"tip1","link":"http:\/\/domain\/file1.html"},"2":{"id":"pvv002","tooltip":"tip2","link":"http:\/\/domain\/file2.html"}}
I hope this is valid JSON object ...
Then here is JavaScript function which should get this string and process it - load to ELEMENT "id" a content of "link".
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>');
}
});
}
It is not throwing any error in browser or console, but elements are not updated at all.
I quess my parsing and accessing data is wrong somehow, but I have no idea how to debug.
Upvotes: 0
Views: 195
Reputation: 5962
As your string is an object
not array
, so you need $.each method to loop over each key
of object.
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>');
});
Upvotes: 4
Reputation: 686
please try this
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>');
}
}
Upvotes: 0