Tengo problemas para obtener los diferentes ID de mi objeto json. Obtengo son la identificación del último elemento.
Esta es la función:
var xmlhttp = new XMLHttpRequest(); var url = "https://wjko5u2865.execute-api.us-east-2.amazonaws.com/articles"; xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var allart = JSON.parse(this.responseText); for(let i = 0; i < allart.Items.length; i++) { document.getElementById("id").innerHTML = allart.Items[i].id; } } }; xmlhttp.open("GET", url, true); xmlhttp.send();Esta es la matriz json que obtengo:
{ "Items":[{ "marca":"Guzzi", "titolo":"Moto Guzzi V100 Mandello, la regina di EICMA 2021", "id":"123456", "immagine":"moto_guzzi_v100_mandello.jpg", "data":"27/11/2021" }, { "marca":"Bimota","titolo":"Bimota: arriverà un'adventure su base Tesi", "id":"135623", "immagine":"bimota-_arrivera_unadventure_su_base_tesi.jpg", "data":"04/12/2021" }, { "marca":"Ducati", "titolo":"Ducati, la DesertX sarà svelata a Dubai il 9 dicembre", "id":"123789", "immagine":"b_desertx-dwp2022-2-uc336332-high.jpg", "data":"04/12/2021" }, {"marca":"Benelli", "titolo":"EICMA 2021, Benelli \"sforna\" le moto più attese", "id":"146975", "immagine":"benelli_2.jpg", "data":"27/11/2021" } ], "Count":4,"ScannedCount":4}Gracias a todos de antemano
El error concreto en su código fue esta línea:
document.getElementById("id").innerHTML = allart.Items[i].id;Necesita un "+" antes de "=" para agregar más cadenas/identificadores al HTML interno.
document.getElementById("id").innerHTML += "<br/>"+allart.Items[i].id;Hice una solución alternativa en la que uso Array.prototype.map() para crear una matriz de todos los ID y luego Array.prototype.join() para crear una cadena con todos los ID.
var xmlhttp = new XMLHttpRequest(); var url = "data:application/json;base64,+SBhdHRlc2UiLAogICAgImlkIjoiMTQ2OTc1IiwKICAgICJpbW1hZ2luZSI6ImJlbmVsbGlfMi5qcGciLAogICAgImRhdGEiOiIyNy8xMS8yMDIxIgogICAgfQogICAgXSwKICAgICJDb3VudCI6NCwiU2Nhbm5lZENvdW50Ijo0fQo="; xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { let allart = JSON.parse(this.responseText); let ids = allart.Items.map(item => item.id).join('<br/>'); document.getElementById("id").innerHTML = ids; } }; xmlhttp.open("GET", url, true); xmlhttp.send(); <div id="id"></div>