Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP] activity indicator podczas wykonywania skrytpu
Forum PHP.pl > Forum > Przedszkole
sebawo
Na wstępie witam, to mój pierwszy post.
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:
  1. <meta http-equiv='Content-type' content='text/html; charset=utf-8' />
  2.  
  3. <script type='text/javascript' src='advajax.js'></script>
  4. <script type='text/javascript'>
  5.  
  6. function Pokaz() {
  7. advAJAX.get({
  8. url : 'scanner_status.php',
  9. parameters : {
  10. 'skanery' : document.getElementById('skanery').value
  11. },
  12. onSuccess : function(obj) {
  13. document.getElementById('status').innerHTML = obj.responseText;
  14. }
  15. });
  16. }
  17.  
  18. function Skanuj(frm) {
  19. advAJAX.get({
  20. url : 'skan.php',
  21. parameters : {
  22. 'skanery' : frm.skanery.value,
  23. 'plik' : frm.plik.value
  24. },
  25. onSuccess : function(obj) {
  26. document.getElementById('status').innerHTML = obj.responseText;
  27. }
  28. });
  29. }
  30.  
  31.  
  32. </head>
  33. <br />
  34. <br />
  35. <br />
  36. <br />
  37. <h1>skanery by seba</h1>
  38. <br />
  39. <br />
  40. <!-- <form action='skan.php' method='GET'> -->
  41. <form onsubmit='Skanuj(this); return false'>
  42. wybierz skaner... <select name=skanery id='skanery' onchange='Pokaz()'>
  43.  
  44. <?php
  45. $wynik = exec("lpstat -v | cut -d':' -f3",&$tablica);
  46.  
  47. for($i=0; $i<(sizeof($tablica)); $i++){
  48. $nazwa = exec("lpstat -v | grep $tablica[$i] | cut -d' ' -f3 | tr -d ':'");
  49. echo ("<option value=$tablica[$i]> $nazwa");
  50. }
  51. ?>
  52.  
  53. </select><br/>
  54. <br/>
  55. nazwa pliku wyjściowego... <input type=text name=plik><br>
  56. <br />
  57. <div id='status'></div>
  58. <input type=submit value='Skanuj'><br/>
  59. </form></center>
  60. </body>
  61. </html>


Dodam, że funkcje w tej postaci działają poprawnie, znaczy tak jak chcę (bez animacji ładowania).

skan.php
  1. <?php
  2.  
  3. $plik=$_GET['plik'];
  4. $scan_dev=$_GET['skanery'];
  5.  
  6. if (empty($plik)) $plik="skan";
  7.  
  8. $full_output_file="/srv/www/htdocs/sanewi/tmp/".$plik.".jpg";
  9. $output_file=$plik.".jpg";
  10. $tmp_file="/srv/www/htdocs/sanewi/tmp/tmp.tmp";
  11. $command = "scanimage -d hpaio:".$scan_dev." --resolution 300 >".$tmp_file." && convert ".$tmp_file." jpeg:".$full_output_file.
  12.  
  13.  
  14. exec($command);
  15.  
  16. //header('Content-Type: application/octet-stream');
  17. //header('Content-Disposition: attachment; filename='.$output_file);
  18. //readfile($full_output_file);
  19. echo("zeskanowano");
  20. ?>
CuteOne
ściągnij Operę jeżeli jej nie masz na dysku -> Narzędzia -> Zaawansowane -> Konsola błędów -> klik na wyczyść -> odśwież stronę -> klik submit ->zobacz do konsoli błędów co się pojawi smile.gif
sebawo
dzięki, dałeś wędkę zamiast ryby, jestem bardzo wdzięczny, działa już ten activity indicator (u mnie roller.gif)
Dla zainteresowanych wrzucam fragment działający:
  1. function Skanuj(frm) {
  2. advAJAX.get({
  3. url : 'skan.php',
  4. parameters : {
  5. 'skanery' : frm.skanery.value,
  6. 'plik' : frm.plik.value
  7. },
  8. onLoading : function(obj) {
  9. document.getElementById('status').innerHTML = 'skanowanie...<br /><img src=roller.gif><br/ ><input type=submit value=Skanuj disabled=disabled>';
  10. },
  11. onSuccess : function(obj) {
  12. document.getElementById('status').innerHTML = obj.responseText;
  13. }
  14. });
  15. }

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.