Stampare una tabella dinamica con dati json

PazzoFrontEnd

Utente Attivo
8 Ott 2013
46
0
6
Buongiorno a tutti, sono nuovo nel forum e spero di trovare qui la soluzione ad un problema particolare che sto affrontando. Non va la porto per le lunghe. Ho il seguente json:

Codice:
{
    "json": {
        "competitions": [
            {
                "competitionId": 10,
                "name": "CampionatoX",
                "matches": [
                    {
                        "matchId": "numer_string",
                        "orderedParticipants": [
                            {
                                "name": "SQUADRA_CASA",
                            },
                            {
                                "name": "SQUADRA_TRASFERTA",
                            }
                        ]
                    }                 
                 
                ],
                "events": [{
                        "matchId": "numer_string",
                        "suppliers": [
                            {
                                "supplierId": 1,
                                "bets": [
                                    {
                                        "bets": [
                                            {
                                                "oddsDecimalFormatted": "2,15"
                                            },
                                            {
                                                "oddsDecimalFormatted": "3,30"
                                            },
                                            {
                                                "oddsDecimalFormatted": "3,40"
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "supplierId": 3,
                                "bets": [
                                    {
                                        "bets": [
                                            {
                                                "oddsDecimalFormatted": "2,15"
                                            },
                                            {
                                                "oddsDecimalFormatted": "3,30"
                                            },
                                            {
                                                "oddsDecimalFormatted": "3,30"
                                            }
                                        ]
                                    }
                                ]
                            },
                            {
                                "supplierId": 4,
                                "bets": [
                                    {
                                        "bets": [
                                            {
                                                "oddsDecimalFormatted": "2,15"
                                            },
                                            {
                                                "oddsDecimalFormatted": "3,30"
                                            },
                                            {
                                                "oddsDecimalFormatted": "3,30"
                                            }
                                        ]
                                    }
                                ]
                            }
                        ]
                    }
                ]
            }
        ],
        "suppliers": {
            "1": {
                "supplierId": 1,
                "name": "fornitore1",
                "urls": {
                    "home_url": {
                        "value": "http://www.fornitore1.it"
                    },
                    "uri_logo_image": {
                        "value": "/fornitore1.gif"
                    }
                }
            },
            "3": {
                "supplierId": 3,
                "name": "fornitore2",
                "urls": {
                    "home_url": {
                        "value": "http://www.fornitore2.it"
                    },
                    "uri_logo_image": {
                        "value": "/fornitore2.gif"
                    }
                }
            },
            "4": {
                "supplierId": 4,
                "name": "fornitore3",
                "urls": {
                    "home_url": {
                        "value": "http://www.fornitore3.it"
                    },
                    "uri_logo_image": {
                        "value": "/fornitore3.gif"
                    }
                }
            }
        }
    }
}

Si tratta di dati relativi alle quote di una partita di calcio e dovrei popolare una tabellina dinamicamente, graficamente formattata nel modo giusto. Ho prodotto il seguente script, che però funziona a metà. Funziona "a metà" nel senso che mi stampa sia il nome della partita nell'h4 dell'intestazione andandomi a prendere il nome delle due squadre (.."orderedParticipants[0].name+" - "+partecipanti.orderedParticipants[1].name"...) sia pure le tre quote (quota1,quotaX,quota2) correttamente sulla riga della tabella (perchè i "suppliers" sono tre come si può vedere dall'oggetto chiamato proprio "suppliers" ed hanno un id differente, cosìcchè ad aumento/decremento dei suppliers il numero di righe cambiano):

Codice:
$(document).ready( function(){

	$.getJSON("my_file.json", function(data){

			var matches = data.model;
			var competizione = matches.competitions[0]; 
			
          		//partita: in questo caso solo la prima (il json ne prevederà una sola)
			var partecipanti = competizione.matches[0]; 
	
			//evento: in questo caso solo il primo (il json ne prevederà uno solo)
			var evento =  matches.competitions[0].events[0];

			var arraySupp = [];
			var arrayOdds = [];

			var tabella = $("table.info");
			var riga; 

			//stampo le due squadre nell'h4 dell'intestazione
			$(".box h4").append("<span>"+partecipanti.orderedParticipants[0].name+" - "+partecipanti.orderedParticipants[1].name+"</span>"); 
					
				
			$.each(evento.suppliers, function(index,value){
						
				quote = value.bets;
				//console.log(quote)
					
				arrayOdds.push(value.supplierId)
				//console.log(arrayOdds)

				$.each(value.bets, function(index, value){
					quote1 = value.bets[0].oddsDecimalFormatted;
					quoteX = value.bets[1].oddsDecimalFormatted;
					quote2 = value.bets[2].oddsDecimalFormatted;
					//console.log(quote1,quoteX,quote2) //qui funziona
				})

				//console.log(quote1,quoteX,quote2) //qui funziona

				riga = $(tabella).append("<tr><td class='fornitoriImg'></td><td>"+quote1+"</td><td>"+quoteX+"</td><td>"+quote2+"</td></tr>");

				})

				$.each(matches.suppliers, function(index, value){
					//console.log(index)
					//console.log(value)
					//console.log(value.supplierId)
					
                                        arraySupp.push(value.supplierId)
					//console.log(arraySupp)
					
                                        fornitori = value.name;
				        ulr_img = value.urls.home_url.value;
				        loghetti = value.urls.uri_logo_image.value;
					//console.log(fornitori)

					if (arraySupp[value] == arrayOdds[value]) {

						var imgFornitore = $("<span><a href='"+ulr_img+"'>"+"<img src='"+loghetti +"' />"+"</a></span>");

						$("table tr td.fornitoriImg").append(imgFornitore);
						
					}

				}) 
					
				//console.log(arraySupp)
				//console.log(arrayOdds)

			});

		});

Questo l'html:

Codice:
<div class="box">
		<h4></h4>	
		<table class="info"  cellspacing="0" cellpadding="0">
				
		</table>	
</div>


Ora la tabella dovrebbe essere cosi:

HTML:
<h4>SQUADRA_CASA - SQUADRA_TRASFERTA</h4>
<table>
<tr><td>imgFornitore</td><td>quota1</td><td>auotaX</td><td>quota2</td></tr>
<tr><td>imgFornitore</td><td>quota1</td><td>auotaX</td><td>quota2</td></tr>
<tr><td>imgFornitore</td><td>quota1</td><td>auotaX</td><td>quota2</td></tr>

n <tr>....

</table>

L'unica cosa che non riesco a stampare è l'immagine e il nome del fornitore in corrispondenza delle relative quote (la corrispondenza è data da un IF e dall'ID del fornitore).

Potete darmi una mano? Se necessitate di ulteriori delucidazioni non esitate a chiedere! Grazie anticipatamente
 

Discussioni simili