Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

109
Vistas
Recupere JSON de la aplicación Ajax e itere los valores JSON en otra función

Acabo de empezar con Ajax, pero tengo un pequeño problema para entender si esto es posible. Tengo un archivo db.json que estoy recuperando con Ajax.

 { "transactions": [ { "date": "4/3/2021", "description": "Electric bill", "type": "Debit", "amount": 250.00 }, { "date": "1/15/2022", "description": "Venmo", "type": "Debit", "amount": 80.00 } ] }

La función Ajax en window.onload

 window.onload = function () { var ajax = new XMLHttpRequest(); ajax.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { jsonObj = JSON.parse(this.responseText); return jsonObj; } }; ajax.open("GET", "../titan-bank/db.json", true); ajax.send();

Inmediatamente después, el archivo JSON debe enviarse a esta clase que luego debe iterar a través del archivo JSON y generar la información.

 var transactions = new Transactions; transactions.getTransactions(); var transactionDisplay = $("transactionDisplay"); class Transactions { constructor (date, description, type, amount) { this.date = date; this.description = description; this.type = type; this.amount = amount; } getTransactions () { for (let id of values) { //adds index for each transaction var index = values.indexOf(id) + 1; //prints out array of transactions transactionDisplay.innerHTML += ("<br>Transaction #" + index + "&emsp;Date: " + id.date + "&emsp;Description: " + id.description + "<br>&emsp;Type: " + id.type + "&emsp;Amount: $" + id.amount.toFixed(2) + "<br>"); } }

Inicialmente estaba usando "valores" de una matriz disponible localmente, pero ahora necesito obtener esta información del archivo JSON. ¿Alguna pista sobre lo que puedo hacer aquí?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Algunas observaciones:

  • Si comienza con Ajax ahora, entonces no use la API XMLHttpRequest , sino la API de fetch . Y como parece que usa jQuery, incluso podría usar la función $.getJSON .
  • La clase Transactions tiene un constructor que toma las propiedades de una transacción, mientras que el método getTransactions está diseñado para manejar múltiples transacciones. Entonces, su clase está mezclando el concepto de una transacción y un conjunto de transacciones múltiples. Sugeriría dedicar la clase a una sola transacción, incluido un método que devuelva la representación HTML de una transacción.
  • La variable values no está definida. Con el cambio propuesto en el punto anterior, tendrías todo lo que necesitas en las propiedades de la instancia.
  • Parece que usas jQuery. Si "transactionDisplay" es la id de un elemento HTML, entonces el selector debe tener un símbolo hash: $("#transactionDisplay")
  • A medida que usa jQuery, ¿por qué no usar el controlador de eventos ready que puede vincular simplemente haciendo $(function () { .... } .

Así es como lo codificaría:

 $(async function () { const response = await fetch("../titan-bank/db.json"); const obj = await response.json(); const transactions = obj.transactions.map(({date, description, type, amount}, i) => new Transaction(i + 1, date, description, type, amount) ); $("#transactionDisplay").html(transactions.map(transaction => transaction.html()).join("<br><br>")); }); class Transaction { // One instance is one transaction constructor (id, date, description, type, amount) { this.id = id; // let's define it here! this.date = date; this.description = description; this.type = type; this.amount = amount; } html() { return "Transaction #" + this.id + "&emsp;Date: " + this.date + "&emsp;Description: " + this.description + "<br>&emsp;Type: " + this.type + "&emsp;Amount: $" + this.amount.toFixed(2); } }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda