Skocz do zawartości

Zdjęcie
- - - - -

Uruchomienie skryptu po zaciągnięciu wszystkich zasobów przez AJAX


6 odpowiedzi w tym temacie
  • Zaloguj się, aby dodać odpowiedź
przemoo83

    Stary wyjadacz

  • PipPipPip
  • 316 postów
    • Czas spędzony online: 24d 21h 32m 26s
46
Bardzo dobra

Napisano 18 listopada 2015 - 12:43

#1

Mam następujacy problem. W pliku index.html mam takie odwołanie do pliku php, który mi zaciąga rekordy z bazy danych:

    function viewdata(){
       $.ajax({
	   type: "GET",
	   url: "php/getdata.php"
      }).done(function( data ) {
	  $('#viewdata').html(data);
      });
    }

Plik getdata.php w skrócie wygląd tak:

<table>
<?php
include "config.php";
$res = $conn->query("select * from table");
while ($row = $res->fetch_assoc()) {
?>
    
	 <tr>
	    <td><?php echo $row['lp']; ?></td>
	    <td><?php echo $row['row1']; ?></td>
	    <td><?php echo $row['row2']; ?></td>
      <td>
        <div id="progressBar">
          <div></div>
        </div>
      </td>

No i jest tam div #progressBar, który chce sobie oskryptować. Skrpyt mam wpliku index.html zalączony przed <body> i owinięty w 

$(document).ready(function(){ });

ale to nic nie daje. Nadal nie chce działać. Jakieś pomysły jak to ogarnąć?


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 18 listopada 2015 - 12:54

#2

Ten #progressBar pojawi Ci się w #viewdata jak już pobierze wszystko, to co chcesz progressować? :)

 

Po 1. nie zalecam zwracania całego html, a np jsona, a htmla generować za pomocą js

Po 2. jak dokładnie to ma działać? Po odpaleniu viewdata() chcesz żeby ajax odbił się do pliku php, w między czasie żeby progress bar ruszył i dopiero jak ajax zdobędzie 100% danych to je wyświetlić? Sprawdź sobie progress event: http://www.dave-bond...progress-HMTL5/ ;)


  • 0

webDeveloper


przemoo83

    Stary wyjadacz

  • PipPipPip
  • 316 postów
    • Czas spędzony online: 24d 21h 32m 26s
46
Bardzo dobra

Napisano 18 listopada 2015 - 13:09

#3

Ten #progressBar pojawi Ci się w #viewdata jak już pobierze wszystko, to co chcesz progressować? :)

 

Po 1. nie zalecam zwracania całego html, a np jsona, a htmla generować za pomocą js

Po 2. jak dokładnie to ma działać? Po odpaleniu viewdata() chcesz żeby ajax odbił się do pliku php, w między czasie żeby progress bar ruszył i dopiero jak ajax zdobędzie 100% danych to je wyświetlić? Sprawdź sobie progress event: http://www.dave-bond...progress-HMTL5/ ;)

No nie wiem własnie czy ja w ogóle dobrze kombinuje. Po prostu w jednym z pól w bazie danych będzie data np. 12.05.2016. i próbuję tak wykombinować żeby te dane przesłać do skryptu, który będzie odpowiedzialny za pokazanie ile czasu pozostało do tej daty. Do tego bedzie służył ten progresbar. To nie jest żaden "loading" tylko on będzie odliczał bardzo odległe daty. Na razie testowo mu sprzedałem od razu w skrypcie przykładowe odliczanie:

$(document).ready(function(){ 
    function progress(timeleft, timetotal, $element) {
        var progressBarWidth = timeleft * $element.width() / timetotal;
        $element.find('div').animate({ width: progressBarWidth }, timeleft == timetotal ? 0 : 1000, 'linear').html(timeleft + " seconds to go");
        if(timeleft > 0) {
            setTimeout(function() {
                progress(timeleft - 1, timetotal, $element);
            }, 1000);
        }
    };
    
    progress(20, 20, $('#progressBar'));
    });

więc teoretycznie powinien jedynie odnaleźć sobie element DOM i wyświetlić progressbar. Działa jeśli <div id="progressBar"> znajduje sie w index.html ale nie działa w getdata.php. Docelowo bym chciał żeby ten skrypt sobie czas odliczania zaciągął z bazy ale jeszcze nie wiem jak to zrobić :P


Użytkownik przemoo83 edytował ten post 18 listopada 2015 - 13:21

  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 18 listopada 2015 - 15:46

#4

No to bardzo źle kombinujesz :D

Zamiast index.html robisz index.php w nim odbijasz się do bazy pobierasz daną datę zapisujesz ją pod javascriptową zmienną i jedziesz :D Choć z drugiej strony bez sensu :P

Tutaj nie musi nic być w JS, wystarczy goły PHP.


  • 0

webDeveloper


przemoo83

    Stary wyjadacz

  • PipPipPip
  • 316 postów
    • Czas spędzony online: 24d 21h 32m 26s
46
Bardzo dobra

Napisano 18 listopada 2015 - 16:28

#5

No to bardzo źle kombinujesz :D

Zamiast index.html robisz index.php w nim odbijasz się do bazy pobierasz daną datę zapisujesz ją pod javascriptową zmienną i jedziesz :D Choć z drugiej strony bez sensu :P

Tutaj nie musi nic być w JS, wystarczy goły PHP.

Ja to podzieliłem na osobne pliki php dla wygody. W sumie to jeden pieron gdzie to wsadzę chyba ale co do tego żeby to było samo php to nie wiem czy dam radę. Za mało znam PHP. Nie wiem też czy to spełni wymagania tego projektu. To ma być taki prosty ale dynamiczny "odliczacz" czasu wygasania domen. Demko tutaj: http://przemoo83.esy.es/domains/


EDIT: W sumie chyba już sobie poradziłem z tym problemem. Po prostu w innym miejscu wstawiłem ten skrypt i zadziałał. Tylko teraz się zastanawiam czy by faktycznie nie przebudować tego projektu skoro piszesz że ten sposób jest bez sensu..


Użytkownik przemoo83 edytował ten post 18 listopada 2015 - 16:28

  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 19 listopada 2015 - 08:10

#6

No bo jest bez sensu :P Po co się odbijać gdzieś skoro można to od razu zrobić w jednym pliku?

Jak zmienisz index.html na index.php to htmli nie ruszasz, po prostu gdzieś na początku dajesz coś w rodzaju:

<?php
$pozostalo = 'tutaj odpowiednie pobieranie danych etc';
?>

A w miejscu gdzie ma być progress bar dajesz:

<?php echo $pozostalo; ?> 

i po sprawie :D


  • 1

webDeveloper


przemoo83

    Stary wyjadacz

  • PipPipPip
  • 316 postów
    • Czas spędzony online: 24d 21h 32m 26s
46
Bardzo dobra

Napisano 19 listopada 2015 - 08:38

#7

Ok czaje :)  a możesz rozwinąć to bo chyba nie do końca rozumiem:

 

Po 1. nie zalecam zwracania całego html, a np jsona, a htmla generować za pomocą js


  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych