Buongiorno! Sto implementando una pagina per la creazione di "fatture". Ho una tabella con una serie di checkbox, una per ogni pratica "potenzialmente fatturabile".. Una volta che l'operatore ha selezionato tutte le righe che gl'interessano una funzione JavaScript tramite ciclo manda ad una pagina php (tramite ajax) il codice rispettivo della riga la quale ritorna un valore che potrà essere 1, 0.5 o 0.
Man mano dovrebbe esservi una variabile (punti) che partendo da 0 viene incrementata.. Infine in base a quel valore andranno ad auto-compilarsi due input di un form.

Il problema è che, malgrado tramite controlli il valore restituito sia corretto e coerente, la variabile "punti" che andrebbe man mano incrementata con quei valori rimane sempre a 0

Di seguito riporto il codice della funzione JS:
codice:
function calcolaBonus(){
    var tabella=document.getElementById("tabellaProvvigioni"); //tabella con checkbox
    var tagCheck=tabella.getElementsByTagName("input","checkbox"); 
    var punti=0.0; //variabile incrementale
    var bonusProduzione,bonusTrainer; //futuri valori form-input
    for(var i=0;i<tagCheck.length;i++){
      if(tagCheck[i].checked==true){//considero solo le checkbox selezionate
        console.log(i+": "+punti);//Per controllo
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200) {
            if(this.responseText=="1"){
              alert("1");//Per controllo
              punti=punti+1;
            }
            if(this.responseText=="0.5"){
              alert("0.5");//Per controllo
              punti=punti+0.5;
            }
          }
        };
        var link="../../ajax/punteggioPod.php?idFornitura=" +  tagCheck[i].id; //pagina php che interroga il server e restituisce un valore pari a :0/0.5/1
        xmlhttp.open("GET", link, true);
        xmlhttp.send();
      }
    }


    if(punti<20)
      bonusProduzione=punti*17;
    else if(punti<30)//20
      bonusProduzione=400;
    else if(punti<40)//30
      bonusProduzione=500;
    else if(punti<50)//40
      bonusProduzione=750;
    else if(punti<60)//50
      bonusProduzione=950;
    else if(punti<80)//60
      bonusProduzione=1200;
    else if(punti>=80)//80
      bonusProduzione=1600;


    if(punti<30)
      bonusTrainer=0;
    else
      bonusTrainer=100;


    document.getElementById("formProd").value=bonusProduzione;
    document.getElementById("formTrainer").value=bonusTrainer;




  }

Malgrado anche tramite gli alert aggiunti per controllo ho la certezza che il valore restituito sia corretto l'unica opzione che mi rimane da pensare è che il problema sia nell'istruzione:
codice:
punti=punti+1;