Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pliki zewnętrzne.
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
stopak
Czy da się napisać taki skrypt w JavieScrypcie rzeby czytał z pliku tekst co 1 sekunde i umieszczał wynik w formularzu tak jak w takim fajnym zegarku. Da się tak?? a jeżeli da sie to jak??
Chewolf
Javascript jest to język skryptowy który działa po stronie przeglądarki , użytkownika. Dlatego też wydaje mi się że nie można do takiego skryptu wprowadzać informacji z zewnętrznych plików - javascript nie czyta plików zewnętrznych. Można to zrobić w php biggrin.gif
Z resztą mogłeś się o tym dowiedzieć szukając w googlach mad.gif
stoprocent
Jedyne co to mozesz pokombinowac z cookies bo to javascript potrafi .
stopak
EE z tego co się orientuje jakoś dało się to zrobić a w php nie potrafie zrobić fajnego czata bez tego wnerwiającego klikania oznaczającego odświerzenie strony sad.gif
Chewolf
Cytat(stopak @ 2004-06-17 20:32:54)
EE z tego co się orientuje jakoś dało się to zrobić a w php nie potrafie zrobić fajnego czata bez tego wnerwiającego klikania oznaczającego odświerzenie strony sad.gif

Niestety musisz użyć dry.gif :
Kod
<meta http-equiv="Refresh" content="15">

15 - czas po którym ma się odświeżyć
cagrET
Cytat(stopak @ 2004-06-17 19:46:35)
Czy da się napisać taki skrypt w JavieScrypcie rzeby czytał z pliku tekst co 1 sekunde i umieszczał wynik w formularzu tak jak w takim fajnym zegarku. Da się tak?? a jeżeli da sie to jak??

Da się to zrobić, ale w przeglądarce musi być także zainstalowana Java. Co 1 sekunde ? Nie sadze zeby plik dalo sie tak szybko wczytac. Stworzenie obiektu javy, polaczenie, wczytanie pliku - pewnie ze 2 sekundy zajmie. Przykładowy kod:

Kod
if(navigator.javaEnabled()){
    var url = 'http://example.com/test.txt';
    D=java.io.DataInputStream(java.net.URL(url).openStream());
    ss="";
    s="";
    while((s=D.readLine())!=null) {
        ss+=s+"\n";
    }
    D.close();
    alert(ss);
}


Zeby móc wczytać ten plik, dany skrypt musi się także znajdować w domenie example.com inaczej wyskoczy błąd - SECURITY ERROR. Możesz wczytywac pliki tylko z wlasnej domeny.

Co do wykonywania co X sekund, możesz uzyc 2 funkcji: setTimeout() , setInterval()
stopak
Tylko że jak uruchamiam ten skrypt to mi wyświetla takie coś :

Brak definicji 'D'
cagrET
Cytat(stopak @ 2004-07-02 16:05:16)
Tylko że jak uruchamiam ten skrypt to mi wyświetla takie coś :

Brak definicji 'D'

Działa na Mozilli i Operze. Nie mam pojęcia czemu w IE nie mozna uzywac obiektow javy.

Na IE, Mozilli i Safari zadziała ten kod (ale na Operze znów nie):

Kod
<script>

function loadFile(url) {
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function processReqChange() {
    if (req.readyState == 4) {
        if (req.status == 200) {
            alert(req.responseText);
        } else {
            alert("There was a problem retrieving the data:\n" + req.statusText);
        }
    }
}

loadFile("http://gosu.pl/tmp/test.html");

</script>


Przykład: http://gosu.pl/tmp/test.html
Na gmail.google.com uzywaja tej techniki (obiektu XMLHttpRequest)
hwao
Mozesz w php zrobic zeby wysyłalo 'na bierzaco' dane ja ksie tylko jakies nowe pojawia, bez odswierznia.
marlowe
Cytat(hwao)
Mozesz w php zrobic zeby wysyłalo 'na bierzaco' dane ja ksie tylko jakies nowe pojawia, bez odswierznia.

Nie sądzę- wydaje mi się, że php ma tylko możliwość jednokrotnego generowania strony, a nie stałego "czuwania" nad stanem jakiejś zmiennej (może sobie coś sprawdzać ale w końcu musi wypisać wyniki). Sądzę, że spodobem mógłby być niewidoczny iframe z odświeżaniem, który zawierałby skrypt sprawdzający dany plik- jeśli coś by się zmieniło zmieniał by główną stronę.
Pozdrawiam.
Bartek
hwao
  1. <?php
  2. while( 1 )
  3. {
  4.  flush();
  5.  ob_flush();
  6.  flush();
  7.  
  8. sleep( 1 ); // sleep dalem poniewaz usleep ( jest lepsze ) ale nie dziala na windowsie ( tylko linux )
  9. echo 'text';
  10. }
  11. ?>

Oczywyscie dane mozna w tej petli pobierac np z pliku textowego
stopak
To zamiast tego echo napisac tam wczxytywanie i wyswietlanie pliku??
hwao
Cytat(stopak @ 2004-07-04 23:11:49)
To zamiast tego echo napisac tam wczxytywanie i wyswietlanie pliku??

Tak a jezeli cos dodajesz to dodawaj to w 2 pliku i zapisuje.
Potem w tej teliwysietlasz to i zerujesz plik
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.