Reputation: 595
I'm trying to use JSON data (returned from PHP) to create HTML for display to the client side.
I've got this in a function that is also serving to populate google maps.
function searchLocationsNear(center) {
//some AJAX that's working fine//
success:function(data, response){
console.log(data);
var markerNodes = data;
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markerNodes.length; i++) {
var uid = markerNodes[i].id;
var name = markerNodes[i].name;
var address = markerNodes[i].address;
var distance = parseFloat(markerNodes[i].distance);
var avatar = markerNodes[i].avatar;
var bio = markerNodes[i].bio;
var rate = markerNodes[i].price;
var latlng = new google.maps.LatLng(
parseFloat(markerNodes[i].lat),
parseFloat(markerNodes[i].lng));
createOption(name, distance, i);
createMarker(latlng, name, avatar, uid, bio, rate);
bounds.extend(latlng);
var html = "<div style='float:left; padding-right:10px;'><img src='user/"+uid+"/"+avatar+"'s alt='Tutor - "+name+" Profile Picture'></div><div class='infowindow'><h3>" + name + "</h3><hr><h4>Rate: "+rate+"</h4>"+bio+"</div>";
console.log(html);
$('#thumblist').html(html);
console.log($('#thumblist'));
}
This Google Map is populating fine, and the console.log($('#thumblist')); shows the two entries that I need to show, but only one of them is appended to #thumblist (the last one). Can anyone help?
Upvotes: 2
Views: 93
Reputation: 64526
You're overwriting the #thumblist
HTML on each iteration. Instead you should append:
$('#thumblist').append(html);
.html()
will overwrite the entire content of the element, whereas .append()
will leave the current content intact and just add to the end.
Upvotes: 2
Reputation: 415
Are you using $('#thumblist').html(html); to assign the html to that element? If so, you are writing over the html in $('#thumblist') each time you assign your var html to it. Can you use append() or after() instead? That way you won't replace the html in thumblist.
Upvotes: 0