Simple jquery code working sometimes when refreshing page

Simple jquery code working sometimes when refreshing page

Guys I am really going totally crazy.

I load a list with data coming from my database.

I have decided to let the user change the year to he can see a detailed list regarding that year.

As soon as I've thrown this new function my page started working random.

One refresh it's working and the other not.

I've understood that it was because the variable year (anno in Italian) was undefined so I've prepared a little code to define it if undefined.

If I run this code sometimes it works and sometimes not.

The php page behind it works steady as a rock if I test it (e.g. http://pitto.homeip.net/mobile/php/getpagati.php?anno=2013)

I really can't think how to solve the riddle since I've just began programming...

Can you please be so kind to lend a hand?

Here I paste my index.js and you can find the not working page at:

http://pitto.homeip.net/mobile

Thanks a lot!
























  1. var serviceURL = "http://pitto.homeip.net/mobile/php/";

  2. var clienti;
  3. var pagamenti;
  4. var mesi = {"GEN":"GEN", "FEB":"FEB", "MAR":"MAR", "APR":"APR", "MAG":"MAG", "GIU":"GIU", "LUG":"LUG", "AGO":"AGO", "SET":"SET", "OTT":"OTT", "NOV":"NOV", "DIC":"DIC"}
  5. var anno;

  6. $(document).bind('pageshow', '#lista_clienti', function(){
  7.         getListaClientiKo();
  8.         pulisciRicerca();
  9. });

  10. function getListaClientiKo() {
  11.         if(typeof anno != 'undefined')
  12.         {
  13.         console.log("anno definito / year defined");
  14.         $.getJSON(serviceURL + 'getpagati.php?anno=' + anno, function(dati) {
  15.                 pagamenti = dati.items;
  16.         });

  17.         $.getJSON(serviceURL + 'getclienti.php', function(data)
  18.                 {
  19.                 $('.listaClientiKo li').remove();
  20.                 clienti = data.items;
  21. console.log (clienti);
  22. console.log (pagamenti);

  23. $.each(clienti, function(i, item) { // For each client
  24. item.pays = [];
  25. $.each(pagamenti, function(i, pay) { // Check each payment
  26. if (item.id_cliente == pay.id_cliente) { // If matching ID
  27. item.pays.push(pay); // Add it to this client
  28.                 }
  29.         });
  30. });
  31. // La funzione sottostante trasforma il testo tutto maiuscolo in testo con solo la prima lettera maiuscola
  32.         $.each(clienti, function(index, clienti) {
  33.                 var mesipagati = (clienti.pays);
  34.                 var totmesipagati = Object.keys(mesipagati).length;
  35.                 var data = new Date();
  36.                 var mese = data.getMonth()+1;
  37.                 var len = Math.abs(totmesipagati - mese);
  38.                 if (len<0)
  39.                 {
  40.                 len = 0;
  41.                 }
  42.                 var strnick = (clienti.nick);
  43.                 strnick = strnick.toLowerCase().replace(/\b[a-z]/g, function(letter) {
  44.                 return letter.toUpperCase();
  45.                 });
  46.                 var strnome = (clienti.nome);
  47.                 strnome = strnome.toLowerCase().replace(/\b[a-z]/g, function(letter) {
  48.                 return letter.toUpperCase();
  49.                 });
  50.                 var strgruppo = (clienti.gruppo);
  51.                 strgruppo = strgruppo.toLowerCase().replace(/\b[a-z]/g, function(letter) {
  52.                 return letter.toUpperCase();
  53.                 });
  54. // La funzione sottostante crea dinamicamente la lista dei clienti
  55. $('.listaClientiKo').append('<li><a href="dettagli_cliente.html?id=' + clienti.id_cliente + '&anno='+ anno +'" data-transition="slidefade">' +
  56.         '<table cellspacing="0" style="margin-top: 10px;">' +
  57.                 '<tbody>' +
  58.                         '<tr>' +
  59.                                 '<td><p>Nick:</p></td>'+
  60.                                 '<td><p style="padding-left: 8px;"><strong>' + strnick + '</strong></p></td>' +
  61.                         '</tr>' +
  62.                         '<tr>' +
  63.                                 '<td><p>Nome:</p></td>'+
  64.                                 '<td><p style="padding-left: 8px;"><strong>' + strnome + '</strong></p></td>' +
  65.                         '</tr>' +
  66.                         '<tr>' +
  67.                                 '<td><p>Gruppo:</p></td>'+
  68.                                 '<td><p style="padding-left: 8px;"><strong>' + strgruppo + '</strong></p></td>' +
  69.                         '</tr>' +
  70.                                 '<span class="ui-li-count">' + len + '</span></a></li>');
  71. $('.listaClientiKo li a').addClass( "cliente" );
  72. });
  73. $('.listaClientiKo').listview('refresh');
  74. });
  75.         }
  76.         else
  77.         {
  78.         console.log("anno non definito / year undefined");
  79.         var dataAnno = new Date();
  80.         var dataAnnoCorrente = dataAnno.getFullYear();
  81.         annoCorrente = dataAnnoCorrente
  82.         anno = annoCorrente
  83.         console.log("l'anno: "+anno);
  84.         $.getJSON(serviceURL + 'getpagati.php?anno=' + anno, function(dati) {
  85.                 pagamenti = dati.items;
  86.         });

  87.         $.getJSON(serviceURL + 'getclienti.php', function(data)
  88.                 {
  89.                 $('.listaClientiKo li').remove();
  90.                 clienti = data.items;
  91. console.log (clienti);
  92. console.log (pagamenti);

  93. $.each(clienti, function(i, item) { // For each client
  94. item.pays = [];
  95. $.each(pagamenti, function(i, pay) { // Check each payment
  96. if (item.id_cliente == pay.id_cliente) { // If matching ID
  97. item.pays.push(pay); // Add it to this client
  98.                 }
  99.         });
  100. });

  101. // La funzione sottostante trasforma il testo tutto maiuscolo in testo con solo la prima lettera maiuscola
  102.         $.each(clienti, function(index, clienti) {
  103.                 var mesipagati = (clienti.pays);
  104.                 var totmesipagati = Object.keys(mesipagati).length;
  105.                 var data = new Date();
  106.                 var mese = data.getMonth()+1;
  107.                 var len = Math.abs(totmesipagati - mese);
  108.                 if (len<0)
  109.                 {
  110.                 len = 0;
  111.                 }
  112.                 var strnick = (clienti.nick);
  113.                 strnick = strnick.toLowerCase().replace(/\b[a-z]/g, function(letter) {
  114.                 return letter.toUpperCase();
  115.                 });
  116.                 var strnome = (clienti.nome);
  117.                 strnome = strnome.toLowerCase().replace(/\b[a-z]/g, function(letter) {
  118.                 return letter.toUpperCase();
  119.                 });
  120.                 var strgruppo = (clienti.gruppo);
  121.                 strgruppo = strgruppo.toLowerCase().replace(/\b[a-z]/g, function(letter) {
  122.                 return letter.toUpperCase();
  123.                 });
  124. // La funzione sottostante crea dinamicamente la lista dei clienti
  125. $('.listaClientiKo').append('<li><a href="dettagli_cliente.html?id=' + clienti.id_cliente + '&anno='+ anno +'" data-transition="slidefade">' +
  126.         '<table cellspacing="0" style="margin-top: 10px;">' +
  127.                 '<tbody>' +
  128.                         '<tr>' +
  129.                                 '<td><p>Nick:</p></td>'+
  130.                                 '<td><p style="padding-left: 8px;"><strong>' + strnick + '</strong></p></td>' +
  131.                         '</tr>' +
  132.                         '<tr>' +
  133.                                 '<td><p>Nome:</p></td>'+
  134.                                 '<td><p style="padding-left: 8px;"><strong>' + strnome + '</strong></p></td>' +
  135.                         '</tr>' +
  136.                         '<tr>' +
  137.                                 '<td><p>Gruppo:</p></td>'+
  138.                                 '<td><p style="padding-left: 8px;"><strong>' + strgruppo + '</strong></p></td>' +
  139.                         '</tr>' +
  140.                                 '<span class="ui-li-count">' + len + '</span></a></li>');
  141. $('.listaClientiKo li a').addClass( "cliente" );
  142. });
  143. $('.listaClientiKo').listview('refresh');
  144. });
  145.         }
  146. }

  147. function pulisciRicerca() {
  148.         $('input[data-type="search"]').val("");
  149. }