Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

115
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda