Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

216
Views
Ajax guardando la matriz en variables globales que no funcionan sigue siendo indefinido

Intentando guardar una matriz recuperada de ajax en una variable global de modo que pueda usarla más adelante pero sigo recibiendo un error indefinido

 <script> var items = []; function add(value){ items.push(value); } $(document).ready( function() { $.ajax({ type: 'POST', url: 'xxxx.php', dataType: 'json', cache: false, success: function(result) { for(i=0; i < result.length; i++){ add(result[i]); } }, }); }); document.write(items[1]) </script>
about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Esta es una llamada AJAX asíncrona. La llamada para add se realizará en un momento posterior a la ejecución de document.write(items[1]);

Así que esta es la forma correcta de hacerlo:

 <script> var items = []; function add(value){ items.push(value); } $(document).ready( function() { $.ajax({ type: 'POST', url: 'xxxx.php', dataType: 'json', cache: false, success: function(result) { for(i=0; i < result.length; i++){ add(result[i]); } document.write(items[1]) }, }); }); </script>

De esta forma, la función que utiliza el resultado se ejecutará cuando se ejecute la función de resultado.

Piénsalo de esta manera: dijiste: Aquí está esta canasta de limones. Luego le pediste a alguien que fuera a algún lado a buscar los limones y antes de que regresara trataste de contar los limones. Entiendo ?

about 4 years ago · Santiago Trujillo Report

0

Puede usar ajaxstop para llamar al método después de que se haya completado la solicitud ajax. Coloque la siguiente función en documento listo:

 $(document).ajaxStop(function () { document.write(items[1]); });

La solución anterior funciona, pero esta es otra opción que utilicé cuando esperaba que se completaran varias funciones de ajax. Esto llamará cada vez que complete una solicitud ajax, pero hay una forma de limitarse a una llamada si es necesario.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!