Tengo una solicitud de Ajax que recupera datos en la base de datos.
Estos datos pueden variar en función de la acción que llama a la solicitud ajax.
Cada vez que se llama a la solicitud de Ajax, quiero que algunos de estos datos se inserten en una matriz de javascript declarada fuera de la función Ajax.
El problema es que, cada vez que se llama a Ajax, mi función logra colocar los datos deseados en la matriz, pero borra los datos anteriores.
Aquí está el guión:
<script> let myArray = []; function fetchWeeksForViewportWidth(startDate) { //AJAX $.ajax({ method: "GET", url: "{{path('days_json')}}", data: { //some data }, success: function (data) { let trParents = document.getElementsByClassName('project-assignment'); $.each(trParents, function(key, parent) { let assId = parent.dataset.assignmentId; myArray[assId] = []; $.each(data['days'], function(key, value) { myArray[assId][value.code] = 0; //some other treatment if(value.code in data['game']) { myArray[assId][value.code] = data['game'][value.code]; }); }); }); }, error: function() { //handle error console.log("error") } }); } $(document).ready( function () { function displayArray(){ console.log(myArray); setTimeout(displayArray, 5000); } displayArray(); }); </script>¿Alguna idea de por qué los nuevos datos no se suman a los de las llamadas ajax anteriores sino que siguen reemplazándolos?
en lugar de asignación
myArray[assId][value.code] = 0;prueba la función push() de la matriz
myArray[assId].push(0);https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push