Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX][PHP] activity indicator podczas wykonywania skrytpu
sebawo
post 7.12.2010, 11:30:17
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.12.2010

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
CuteOne
post 8.12.2010, 01:09:44
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


ś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
Go to the top of the page
+Quote Post
sebawo
post 8.12.2010, 09:27:50
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.12.2010

Ostrzeżenie: (0%)
-----


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. }

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:25