View Single Post
Old 13-05-2011, 12:22   #1
Alhazred
Senior Member
 
L'Avatar di Alhazred
 
Iscritto dal: Dec 2003
Messaggi: 1760
Funzione Ajax, non sempre funziona

Su una pagina del mio sito ho alcuni file che si possono scaricare e voglio tener traccia del numero di download.
Per farlo ho realizzato una tabella in un db con una entry per ogni file e uno script php che riceve come parametro il codice del file e aggiorna la relativa entry.
Fino a qui nessun problema perché se nella barra degli indirizzi metto la url fino allo script comprensiva di un codice valido ad ogni refresh della pagina il db viene aggiornato correttamente.

Adesso viene il problema, vorrei fare in modo che questo script venga chiamato ogni volta che si clicca sul link per il download e che ciò avvenga tramite Ajax per non ricaricare la pagina.
Questa è la funzione che ho scritto, ma funziona a singhiozzo, nel senso che a volte il db viene aggiornato ed altre no.
Non riesco a capirne il motivo, voi vedete qualche errore?
La fareste in modo diverso?
Codice:
function addDownload(softid) { 

	var req;
	
	if(window.XMLHttpRequest){
		//For Firefox, Safari, Opera
		req = new XMLHttpRequest();
	}
	else if(window.ActiveXObject){
		//For IE 6+
		req = new ActiveXObject("Msxml2.XMLHTTP");
	}
	else{
		//Error for an old browser
		alert("Your browser is not IE 6 or higher, or Firefox or Safari or Opera");
	}
					
	var url = "utils/add_download.php?rnd="+ Math.floor(Math.random() * (9999))+"&softid="+softid;
				
	req.open("GET",url,true);
	req.send(null);
	
}
Questa funzione viene chiamata cliccando su un'immagine alla quale è associato il link al file, così
Codice:
<a href="downloads/jtemplates/koi/koi-j16template-1.0.zip" >
	<img src="images/btn_download.png" alt="download" title="download" onclick="addDownload('koi')"/>
</a>
La funzione parte sempre (ho provato con un alert), ma non sempre attiva lo script php.
Alhazred è offline   Rispondi citando il messaggio o parte di esso