Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: PHP per Ajax einbinden

  1. #1
    Neuer Benutzer
    Registriert seit
    17.01.2009
    Beiträge
    6

    Standard PHP per Ajax einbinden

    Hallo zusammen!

    Ich möchte gern eine Statusabfrage "dynamisch" in ein DIV einbinden.
    Bsp: Ich will sehen, welcher DJ gerade auf einem speziellen Stream sendet.
    Und ich möchte bei einem DJ Wechsel den neuen DJ ohne "Seite Aktualisieren" anzeigen lassen.

    Ich habe schon mal eine PHP Abfrage hinbekommen. Die funktioniert auch.
    Nur solange ich nicht Aktualisieren drückt wird weiter der alte DJ angezeigt (was ja auch so logisch ist).

    Ich habe schon mal grob gehört das Ajax die Lösung sei, kann damit aber (noch) nichts anfangen. D.h. ich will PHP Code per Ajax einbinden und auch noch aller x Sekunden aktuallisieren.

    Bin für jede Hilfe Dankbar.

    Gruß Thomas


    Vielen Dank

    Gruß Thomas

  2. #2
    Moderator Avatar von narkaT
    Registriert seit
    26.06.2007
    Beiträge
    2.406

    Standard

    das hier dürfte eine gute lektüre abgeben

    MfG
    Jan

  3. #3
    Neuer Benutzer
    Registriert seit
    17.01.2009
    Beiträge
    6

    Standard

    Vielen Dank, Jan!

    Werde mich also mal durch den Text lesen!

    Gruß Thomas

  4. #4
    Neuer Benutzer
    Registriert seit
    17.01.2009
    Beiträge
    6

    Standard Ladezeiten:

    Hallo zusammen,

    ich habe das vom Jan gepostete "HowTo" gelesen. Alles funktioniert prima.
    Die PHP Datei wird alle 10 Sekunden geladen.

    Allerdings wird beim Start die Lade... Anzeige geschaltet.
    Diese bleibt so lange stehen wie ich Sekunden zum Reload eingestellt habe.
    Also wenn ich 10 sek einstelle habe ich 10 sek den Ladestatus und dann aller 10sek den Request.
    Wenn ich aber 30 sek einstelle habe ich 30 sek den Ladestatus (also wie eine erste leere Schleife) und dann aller 30 sek den Request.

    Wie bekomme ich es hin das er gleich die gewünschte Datei anzeigt und dann den Request ausführt?

    Hier mein Code:
    Code:
    <script type="text/javascript" language="javascript">
     
        var http_request = false;
     
        function macheRequest(url) {
     
            http_request = false;
     
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
     
            if (!http_request) {
                alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
                return false;
            }
            http_request.open('GET', url, true);
            http_request.onreadystatechange = alertInhalt;
            http_request.send(null);
     
        }
     
        function alertInhalt() {
            if (http_request.readyState == 4) {
                  var answer = http_request.responseText;
                  if(document.getElementById("inhalt").innerHTML != answer){
                    document.getElementById("inhalt").innerHTML = answer;
                  }
                  else{
                    document.getElementById("inhalt").innerHTML = "";
                  }
            }
     
        }
        setInterval("macheRequest('../test.php')",10000);
    </script>
    Dieses Script gibt die aktuelle Serverzeit aus:<br>
    <div id="inhalt">Lade..</div>
    die Test Php gibt nur die Uhrzeit aus!

    Code:
    <?php
    echo date("H:i:s", time());
    ?>

  5. #5
    Neuer Benutzer
    Registriert seit
    02.04.2007
    Ort
    Hamburg
    Beiträge
    21

    Standard

    du musst die funktion "macheRequest('../test.php')" direkt nach laden der Page einmal ausführen.

    mit setTimeout führst du ja eine Funktion zeitversetzt aus, zum reloaden des divs ist das auch so ok, mach z.B. mal noch folgendes nach dem setTimeout in deinen Quelltext:

    macheRequest('../test.php');

    dann führt er die Funktion direkt aus und auch immer nach 10sekunden.

    Lg Dominic
    Wer nen Rechtschreibfehler findet darf ihn behalten!!!

  6. #6
    Neuer Benutzer
    Registriert seit
    17.01.2009
    Beiträge
    6

    Standard

    Hi Dominic,

    genau das war die Lösung. Vielen Dank!

  7. #7
    Neuer Benutzer
    Registriert seit
    02.04.2007
    Ort
    Hamburg
    Beiträge
    21

    Standard

    ZitatZitat von RFfunThomas Beitrag anzeigen
    Hi Dominic,

    genau das war die Lösung. Vielen Dank!
    Hallo Thomas.

    Bitte

    mach meine vorschlag mal besser so:

    window.onload = "macheRequest('../test.php')";

    das ist besser


    Ist das der einzige Teil den du mit Ajax realisieren möchtest? Wenn nicht würd ich dir vllt nen JS Framework empfehlen.

    Lg
    Geändert von Domi741 (19.01.2009 um 00:37 Uhr)
    Wer nen Rechtschreibfehler findet darf ihn behalten!!!

  8. #8
    Neuer Benutzer
    Registriert seit
    17.01.2009
    Beiträge
    6

    Standard

    ZitatZitat von RFfunThomas Beitrag anzeigen
    Hi Dominic,

    ich will eine Radioseite mit Drupal machen. Soweit schaffe ich das alles mit PHP.
    Nur der dynamische Zugriff auf die Statusanzeige der sendenden DJ´s war ein Problem. Den "Rest" schaffe ich ohne Ajax, oder ich frage noch mal nach.

    Allerdings habe ich noch eine kleine Sache. Die Darstellung von Umlauten.
    Beim ersten Aufruf ist alles richtig. Also "ä,ü oder ö". Beim ersten Request wird ein auf der spitze stehendens Quadrat mit einem Fragezeichen daraus.

    Hm. Hast auch hierfür einen Vorschlag?

    Gruß und Danke
    Thomas
    Mit Windows.onload... erhalte ich das Ergebnis aud dem 1. Post. Also erst die Ladeanzeige, dann den Request...

    Code:
    <script type="text/javascript" language="javascript">
     
        var http_request = false;
     
        function macheRequest(url) {
     
            http_request = false;
     
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
     
            if (!http_request) {
                alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
                return false;
            }
            http_request.open('GET', url, true);
            http_request.onreadystatechange = alertInhalt;
            http_request.send(null);
     
        }
     
        function alertInhalt() {
            if (http_request.readyState == 4) {
                  var answer = http_request.responseText;
                  if(document.getElementById("inhalt").innerHTML != answer){
                    document.getElementById("inhalt").innerHTML = answer;
                  }
                  else{
                    document.getElementById("inhalt").innerHTML = "";
                  }
            }
     
        }
        setInterval("macheRequest('../block_onlinestatus.php')",90000);
    
    window.onload = "macheRequest('../block_onlinestatus.php')";
    </script>
    <div id="inhalt">Lade...</div>
    So meintest Du dsa doch, oder?

  9. #9
    Neuer Benutzer
    Registriert seit
    02.04.2007
    Ort
    Hamburg
    Beiträge
    21

    Standard

    ZitatZitat von RFfunThomas Beitrag anzeigen
    Mit Windows.onload... erhalte ich das Ergebnis aud dem 1. Post. Also erst die Ladeanzeige, dann den Request...

    Code:
    <script type="text/javascript" language="javascript">
     
        var http_request = false;
     
        function macheRequest(url) {
     
            http_request = false;
     
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
     
            if (!http_request) {
                alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
                return false;
            }
            http_request.open('GET', url, true);
            http_request.onreadystatechange = alertInhalt;
            http_request.send(null);
     
        }
     
        function alertInhalt() {
            if (http_request.readyState == 4) {
                  var answer = http_request.responseText;
                  if(document.getElementById("inhalt").innerHTML != answer){
                    document.getElementById("inhalt").innerHTML = answer;
                  }
                  else{
                    document.getElementById("inhalt").innerHTML = "";
                  }
            }
     
        }
        setInterval("macheRequest('../block_onlinestatus.php')",90000);
    
    window.onload = "macheRequest('../block_onlinestatus.php')";
    </script>
    <div id="inhalt">Lade...</div>
    So meintest Du dsa doch, oder?

    Mach erstmal so wie in meinem ersten Vorschlag, kann sein dass es mit window.onload nur mit nem JS Framework funzt. Ich benutze grundsätzlich Mootools deswegen hab ich bei solchen Sachen nie Probleme =)

    Lg Dominic
    Wer nen Rechtschreibfehler findet darf ihn behalten!!!

  10. #10
    Erfahrener Benutzer Avatar von tecM0
    Registriert seit
    24.02.2006
    Ort
    Erfurt
    Beiträge
    744

    Standard

    Ja, mit window.onload gibt es da so einige Probleme, siehe z.b hier Dean Edwards: window.onload (again) .

    Mit einem Framework deiner Wahl (jQuery,Prototype,MooTools,Dojo,...) kannst du das vereinfachen, aber ich finde man sollte es auch mal ohne gemacht haben um zu verstehen was diese Toolkits einem abnehmen.
    Das wird schon

    Aber an das elendige "Browsergesniffe" solltest du dich lieber nicht gewöhnen. Es ist und bleibt ein Kampf gegen Windmühlen

    bei jQuery gibt es das z.b. bald nicht mehr http://docs.jquery.com/Release:jQuery_1.3 siehe

    "No More Browser Sniffing

    The final major feature of this release is one that you probably won't ever see or deal directly with but it's an important change that'll help to make jQuery last longer and with less bugs: As of 1.3, jQuery no longer uses any form of browser/userAgent sniffing internally - and is the first major JavaScript library to do so.

    Browser sniffing is a technique in which you make assumptions about how a piece of code will work in the future. Generally this means making an assumption that a specific browser bug will always be there - which frequently leads to code breaking when browsers make changes and fix bugs.

    Instead we use a technique called feature detection where we simulate a particular browser feature or bug to verify its existence. We've encapsulated all the checks that we use in jQuery into a single object: jQuery.support. More information about it, feature detection, and what this feature provides can be found in the jQuery.support documentation...."

    t.
    Geändert von tecM0 (20.01.2009 um 03:56 Uhr)
    “The city’s central computer told you? R2D2, you know better than to trust a strange computer!”
    (C3PO)

Seite 1 von 2 12 LetzteLetzte

LinkBacks (?)

  1. Dean Edwards: window.onload (again)
    Refback This thread
    02.06.2010, 03:50

Ähnliche Themen

  1. FX.Slide einbinden (MooTools)
    Von Heglandio im Forum JavaScript
    Antworten: 9
    Letzter Beitrag: 04.09.2008, 01:59
  2. Externe Scripte einbinden
    Von 030 im Forum JavaScript
    Antworten: 6
    Letzter Beitrag: 16.07.2008, 13:39
  3. php per ajax einbinden und werte speichern!
    Von Gamer20 im Forum Serverseitige Skriptsprachen
    Antworten: 9
    Letzter Beitrag: 12.08.2007, 15:41
  4. Seite einbinden mit Ajax
    Von nixdorf im Forum Allgemein
    Antworten: 3
    Letzter Beitrag: 26.06.2007, 17:13
  5. Stream (Shoutcast) Info PHP Script in Ajax einbinden
    Von BadFriend im Forum Serverseitige Skriptsprachen
    Antworten: 18
    Letzter Beitrag: 02.06.2006, 01:07

Lesezeichen

Lesezeichen
  • An Mister Wong übertragenMister Wong
  • An YiGG.de übertragenYiGG.de
  • An Google übertragenGoogle
  • An del.icio.us übertragendel.icio.us

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •