Просто случилась такая же проблема, поэтому я придумал что-то подобное. Все, что вам нужно сделать, это добавить необходимый код и назначить функцию do_the_script для события onclick.
<script type="text/javascript">
var myIntv;
function do_the_script() {
// play animation ...
var address='fancy_script.php';
var tmp = new XMLHttpRequest();
myIntv=setInterval(function(){
tmp.addEventListener("load", doneHandler, false);
tmp.open("POST", address);
tmp.send(null);
}, 1000);
}
function doneHandler(event) {
// maybe do something when script is executed
clearInterval(myIntv);
}
</script>
Как вы могли заметить, код, который «вызывает» адрес, выполняется каждую 1 секунду. Это делается для того, чтобы сделать вызов достаточно много раз, чтобы получить один положительный ответ, вызвать doneHandler и затем очистить интервал. Если вы считаете, что ваш сервер может реагировать быстрее или медленнее, вам следует соответствующим образом изменить эти миллисекунды.