Ok, si el problema es únicamente el molesto alert puedes quitarlo perfectamente, lo puse para informar al cliente que su votación no se había efectuado. Ya que el título del tema es "detener un script AJAX con setTimeout ejecutandose" y se detiene algo que el usuario a realizado lo correcto -en mi opinion- es informarlo. Pero ya he dicho, puedes quitarlo y se seguirá detiniendo el proceso.
Ahora bien otra solución podría ser encolar, por asi decirlo, los diferentes procesos ajax. Es decir: si el usuario ha votado, o lo que es lo mismo, si la capa yahavotado existe en vez de detener la ejecución se trataría de por medio de setTimeout volver a llamar a la función, generando de esta forma como una especie de cola de espera. Si te agrada esta solución y quieres intentar implementarla sería algo asi:
Código javascript
:
Ver originalif(document.getElementById('yahavotado')){
setTimeout("votar('"+srt+"','"+valor+"')",3000)
//alert('debe esperar unos segundos');
return false;
}
Si lo pruebas ya comentarás y si tienes algun problema y puedo ayudarte aqui estaré,
Saludos