No descubrí cómo crear un mensaje json en jquery con valores dinámicos para un elemento de matriz clave.
Estoy tratando de construir un mensaje json como este:
{ "line": { "name": "Test", "images": [ { "order": "1", "link": "https://google.com/1.jpg", "name": "1.jpg" }, { "order": "2", "link": "https://google.com/2.jpg", "name": "2.jpg" } ] } }No puedo adjuntar las fotos al mensaje.
jsonObbj = {}; line = {}; line ["name"] = $("#name").val(); counter = 1; $("div.carousel_image > img").each(function() { image = {}; image ["order"] = counter; image ["name"] = $(this).attr('src'); line ["images"].push(image); // How can I edit this image to the images array counter++; }); // how can I add the line to the array¡Gracias por tu ayuda!
Debe inicializar line.images en una matriz vacía.
jsonObbj = {}; line = {}; line ["name"] = $("#name").val(); line["images"] = []; // add this line counter = 1; $("div.carousel_image > img").each(function() { image = {}; image ["order"] = counter; image ["name"] = $(this).attr('src'); line ["images"].push(image); // How can I edit this image to the images array counter++; }); Tenga en cuenta que, en general, cuando las claves de su objeto son cadenas normales, desea utilizar la notación de puntos: line.images
JSFiddle: https://jsfiddle.net/to4xhewu/
Debe inicializar line.images como una matriz antes de poder comenzar a presionarlo. También debe asegurarse de declarar sus variables correctamente con const , let o var o, de lo contrario, serán implícitamente globales .
Pruebe esto para una alternativa de inicializador literal de objeto simple
const jsonObbj = { line: { name: $("#name").val(), images: $("div.carousel_image > img").map((i, img) => ({ order: i + 1, name: img.getAttribute("src"), link: img.src })).get() } }