Ciao a tutti, è un problema un pò strano, ma a quanto pare il local storage mi memorizza i dati in maniera caotica e non funziona a dovere.
Meglio che parto dal principio.
Allora io sto facendo un sito per mobile di un sito già esistente ma che fa vedere solo alcune informazioni.
Il sito è di risultati sportivi
la home fa vedere i campionati in essere, e quando si clicca su di un campionato, si entra nelle competizioni con le diverse gare.
Il problema è quando aggiorno la pagina delle competizioni, dato che è una pagina dinamica, si dovrebbe aggiornare con i dati correnti e, con il local storage, i dati dovrebbero essere visibili e persistenti nella pagina.... e qui nasce il problema.
Quando clicco sul campionato entro nelle competizioni, che se le aggiorno spariscono.
Devo dire che per fare questa pagina ho usato una funzione locale, e da lì ho pensato che fosse quello il problema, invece quando ho fatto una funzione globale, e son andata a richiamare il local storage con i dati memorizzati, mi ha fatto apparire solo una ed una sola competizione, qualsiasi campionato selezionassi.
Quindi ho voluto vedere cosa memorizzava il LS ed Ecco cosa memorizza:
Codice:
0: {"Competition_ID":"1","Competition_Name":"Elitserien 2012","Competition_ShortName":"Elitserien 2012","Competition_Gender":"Men","Competition_Matches":"2","Competition_Phases":[{"Type":"Phase","Phase_ID":"1","Phase_Name":"Small Country Division","Phase_ShortName":"SMD"},{"Type":"Pool","Pool_ID":"1","Pool_Name":"Pool A","Pool_Matches":"2"},{"Type":"Pool","Pool_ID":"2","Pool_Name":"Pool B","Pool_Matches":""},{"Type":"Phase","Phase_ID":"2","Phase_Name":"Small Country Division","Phase_ShortName":"SMD"},{"Type":"Pool","Pool_ID":"1","Pool_Name":"Pool A","Pool_Matches":"2"},{"Type":"Pool","Pool_ID":"2","Pool_Name":"Pool B","Pool_Matches":""}]}
4: 4
5: 5
2: {"Competition_ID":"3","Competition_Name":"LIGA 2012","Competition_ShortName":"Elitserien 2012","Competition_Gender":"Men","Competition_Matches":"2","Competition_Phases":[{"Type":"Phase","Phase_ID":"1","Phase_Name":"Small Country Division","Phase_ShortName":"SMD"},{"Type":"Pool","Pool_ID":"1","Pool_Name":"Pool A","Pool_Matches":"2"},{"Type":"Pool","Pool_ID":"2","Pool_Name":"Pool B","Pool_Matches":""}]}
3: 3
1: {"Competition_ID":"2","Competition_Name":"LIGACUPEN 2012","Competition_ShortName":"Elitserien 2012","Competition_Gender":"Men","Competition_Matches":"2","Competition_Phases":[{"Type":"Phase","Phase_ID":"1","Phase_Name":"Small Country Division","Phase_ShortName":"SMD"},{"Type":"Pool","Pool_ID":"1","Pool_Name":"Pool A","Pool_Matches":"2"}]}
E' un file json con id sparsi ed alcuni campi vuoti.
il codice della funzione globale è questa:
Codice:
$(document).bind("pagechange", function (event, data){
var page = $.mobile.activePage[0].id;//dichiarazione di variabile che fa riferimento alla pagina attiva
if (page == 'competition') {
for (var j = 0; j < localStorage.length; j++) {
var c = JSON.parse(localStorage.getItem(localStorage.key(j)));
$.ajax ({
type: "POST",
url: "competitions_phases.json",
dataType: "json",
success: function(data, textStatus, jqXHR){
for (var i=0; i < data.Competition.length; i++){
localStorage.setItem(i, JSON.stringify(data.Competition[i]));
var comp = data.Competition[i];
if(c.Competition_ID == comp.Competition_ID){
var res ='<a class="ui-btn-left ui-btn ui-btn-icon-notext ui-btn-corner-all ui-shadow ui-btn-up-c" href="#home" data-role="button" data-icon="home" title=" Home ">';
res +='<span class="ui-btn-inner ui-btn-corner-all"> <span class="ui-btn-text" > Home </span><span data-form="ui-icon" class="ui-icon ui-icon-home ui-icon-shadow"></span></span></a>';
res +='<div class="ui-header ui-bar-c" data-swatch="c" data-theme="c" data-form="ui-bar-c" ><h1 class="ui-title" >competizione '+comp.Competition_ID+' '+comp.Competition_Name+'</h1></div>';
var res2 = '<ul data-role="listview" id="newlist" data-position="in-line" data-theme="c" >';
for (var y=0; y<comp.Competition_Phases.length; y++){
var phase= comp.Competition_Phases[y];
if (phase.Type == "Phase"){
res2 += ' <li data-role="list-divider" data-swatch="a" data-theme="a" data-form="ui-bar-a">' + phase.Phase_Name+'</li>';}
else {
res2 += ' <li data-form="ui-btn-up-a"><a href="#">'+phase.Pool_Name+'</a></li>';
}
}
res2 += '</ul>';
//z='';
$('#header').empty();
$('#competition-pool').empty();
$('#header').prepend(res);
$("#competition-pool").prepend(res2);
$("#newlist").listview();
}
}
},
error: function (jqXHR, textStatus, errorThrown){
alert(textStatus);
}
});
}
}
});
C'è qualcuno che mi sa aiutare urgentemente?
cosa sbaglio?
se c'è bisogno anche dell'altra parte di codice ditemi...
Grazie a tutti
Rox