Napisałem sobie prościutki formularz i skrypt w php do skanowania na urządzeniach w sieci. Problem w tym, że podczas wykonywania skryptu użytkownik nie wie czy skanowanie się rozpoczęło albo czy w ogóle coś się dzieje, dlatego chciałem dorzucić jakiś 'activity indicator' aby user wiedział, że ma czekać. Zainteresowałem się więc AJAX`em, pozmieniałem co nieco i oto moje wypociny, zastrzegam, że nie jestem webmasterem toteż mam nikłe doświadczenie.
Próbowałem dodać w funkcji Skanuj() dodatkowo onLoading, ale po dodaniu nie działają obie funkcje, pewnie coś robię źle, tylko nie wiem co...
formularz:
<html> <head> <meta http-equiv='Content-type' content='text/html; charset=utf-8' /> <script type='text/javascript'> function Pokaz() { advAJAX.get({ url : 'scanner_status.php', parameters : { 'skanery' : document.getElementById('skanery').value }, onSuccess : function(obj) { document.getElementById('status').innerHTML = obj.responseText; } }); } function Skanuj(frm) { advAJAX.get({ url : 'skan.php', parameters : { 'skanery' : frm.skanery.value, 'plik' : frm.plik.value }, onSuccess : function(obj) { document.getElementById('status').innerHTML = obj.responseText; } }); } </script> </head> <body> <center> <br /> <br /> <br /> <br /> <br /> <br /> <!-- <form action='skan.php' method='GET'> --> <form onsubmit='Skanuj(this); return false'> wybierz skaner... <select name=skanery id='skanery' onchange='Pokaz()'> <?php $wynik = exec("lpstat -v | cut -d':' -f3",&$tablica); for($i=0; $i<(sizeof($tablica)); $i++){ $nazwa = exec("lpstat -v | grep $tablica[$i] | cut -d' ' -f3 | tr -d ':'"); echo ("<option value=$tablica[$i]> $nazwa"); } ?> <br/> <br /> </body> </html>
Dodam, że funkcje w tej postaci działają poprawnie, znaczy tak jak chcę (bez animacji ładowania).
skan.php
<?php $plik=$_GET['plik']; $scan_dev=$_GET['skanery']; $full_output_file="/srv/www/htdocs/sanewi/tmp/".$plik.".jpg"; $output_file=$plik.".jpg"; $tmp_file="/srv/www/htdocs/sanewi/tmp/tmp.tmp"; $command = "scanimage -d hpaio:".$scan_dev." --resolution 300 >".$tmp_file." && convert ".$tmp_file." jpeg:".$full_output_file. //header('Content-Type: application/octet-stream'); //header('Content-Disposition: attachment; filename='.$output_file); //readfile($full_output_file); ?>