Antworten auf deine Fragen:
Neues Thema erstellen

Zufallstext mit Ajax (?) laden

ps_newbie

Nicht mehr ganz neu hier

Ich möchte aus einer txt-Datei mit ca. 50 Statements jeweils eines davon auf der Seite anzeigen. Dabei soll man über einen Button ein neues Statement (zufällig generiert!) laden.
Ich will nicht die ganze Seite neu laden, sondern nur das Statement. Das sollte glaube ich mit Ajax realisierbar sein. Aber wie?
(Eigentlich ist es wie "würfeln", aber statt einer Würfel-Augenzahl soll ein Text ausgegeben werden)
Zufalls-Skripte gibt es einige. Aber ich weiss nicht, wie ich den Button fürs neu-laden kreiere bzw. programmiere. Hat jemand eine Idee?
 

r3nt5ch3r

~ Allround pG ~

AW: Zufallstext mit Ajax (?) laden

Naja der Button wird ein AJAX-Request an eine PHP Datei stellen. Diese PHP Datei liest deine txt-Datei und gibt mit echo zufällig ein "Statement" aus. Diese Ausgabe nimmt "AJAX" und fügt sie irgendwo ein...

Kannst mir ja mal deine ICQ# oder sonst was zukommen lassen, dann kann ich dir das kurz bauen...
 

cebito

undefined

AW: Zufallstext mit Ajax (?) laden

Geht auch mit Javascript, die Texte einfach in ein Array schreiben.

Code:
var text = new Array();
    text[0] = "ein text";
    text[1] = "noch einer.";
    text[2] = "schon der dritte";
    text[3] = "wieder ein text";
    text[4] = "und noch einer";
    text[5] = "jetzt is ok"; //undimmersoweiter

function zufaelligneu() {
var memo = document.createTextNode(text[Math.round(Math.random()*[COLOR=Red]5[/COLOR])]); //Anzahl der texte
         document.getElementById ("[COLOR=Red]deinTextDiv[/COLOR]").replaceChild (memo, document.getElementById ("[COLOR=Red]deinTextDiv[/COLOR]").firstChild); //deine divID eintragen
setTimeout ("zufaelligneu ();",30000); //optional, nach 30 sek ein neuer Text
}
 

ps_newbie

Nicht mehr ganz neu hier

AW: Zufallstext mit Ajax (?) laden

und wenn ich alle Texte aus einer bereits bestehenden txt-Datei lade? (statt 50+ Zeilen in den Code zu schreiben?)
 

r3nt5ch3r

~ Allround pG ~

AW: Zufallstext mit Ajax (?) laden

Geht auch mit Javascript, die Texte einfach in ein Array schreiben.
Stimmt, ist vermutlich die bessere Lösung. Trotzdem mein Vorschlag:

random.php
PHP:
<?
$statements = array(
    'Hallo!',
    'Yeah!',
);

echo $statements[array_rand($statements)];
?>
Ajax.js
Code:
function Ajax(){
    this.request = null;
    
    this.buildRequest = function(eventListener) {
        try {
            this.request = new XMLHttpRequest();
        }
        catch (e) {
            try {
                this.request = new ActiveXObject('Msxml2.XMLHTTP');
            }
            catch (e) {
                try {
                    this.request = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch (e) {
                    return false;
                }
            }
        }
        
        this.request.onreadystatechange = eventListener;
        return true;
    }
    
     this.get = function(url, eventListener) {
        if (this.buildRequest(eventListener)) {
            this.request.open('GET', url, true);
            this.request.send(null);
            return true;
        }
        return false;
    }
}
index.php
PHP:
<script type="text/javascript" src="Ajax.js"></script>
<script type="text/javascript">

var ajax = new Ajax();
function ladeContent(){
    ajax.get('random.php', function(){ callback(); });
}

function callback() {
    if (ajax.request.readyState == 4) {
        document.getElementById('content').innerHTML = ajax.request.responseText;
    }
    
}

</script>

<div id="content"></div>
<input type="button" onclick="ladeContent();" />

das Array $statements kannst du ganz einfach mit der folgenden Funktion mit einer Datei erstellen:
 
Zuletzt bearbeitet:

ps_newbie

Nicht mehr ganz neu hier

AW: Zufallstext mit Ajax (?) laden

ihr seid ja zackig... unglaublich. komme ja kaum nach...
ehm, was steht im Content? echo... irgendwas?
 

ps_newbie

Nicht mehr ganz neu hier

AW: Zufallstext mit Ajax (?) laden

also im Moment steht da ja <div id="content"></div>
muss das ergänzt werden mit
<div id="content"><? php echo... ??? </div>
 

r3nt5ch3r

~ Allround pG ~

AW: Zufallstext mit Ajax (?) laden

Nein, das ist komplett vollständig so!

siehe:
Code:
[COLOR=#000000]document.getElementById('content').innerHTML = ajax.request.responseText;[/COLOR]

Speicher doch einfach mal die 3 Dateien lokal ab, öffne die index.php und drück auf den Button...
 

ps_newbie

Nicht mehr ganz neu hier

AW: Zufallstext mit Ajax (?) laden

ja... ;)
läuft schon über den Server
aber die Ausgabe ist doch
<body>
<div id="content"></div>
<input type="button" onclick="ladeContent();" />
</body>

???
und wenn ich <div id="content">hallo</div> schreibe
steht im Browser (php oder nicht)
hallo
jetzt steht aber nichts?!
 

r3nt5ch3r

~ Allround pG ~

AW: Zufallstext mit Ajax (?) laden

Drück doch ma auf den Button, der Content wird erst dann von AJAX geladen und eingefügt...

eigtl selbsterklärend:
Code:
[COLOR=#000000]<input type="button" onclick="ladeContent();" />[/COLOR]

Ansonsten kannst du auch gerne mal die/den URL posten, damit wir schauen können ob/was du falsch gemacht hast^^
 
Zuletzt bearbeitet:

sokie

Mod | Web

AW: Zufallstext mit Ajax (?) laden

nun hast du aber noch keine lösung für deine eigene Textdatei.
natürlich muss die ja erstmal entsprechend vorbereitet werden, dass du da auf einzelne Texte zugreifen kannst.
der Ansatz von cebito scheint da sehr geeignet zu sein, und braucht zudem gar kein httpRequest.
das array mit den 50 Zeilen kann man ja in eine externe .js datei legen und per <script type="text/javascript src="text.js"> laden.
 

r3nt5ch3r

~ Allround pG ~

AW: Zufallstext mit Ajax (?) laden

Lösung (wie schon indirekt angedeutet - Vorraussetzung: jedes Statement steht in einer Zeile):
random.php
PHP:
 <?
$statements = file('meineDatei.txt');
echo $statements[array_rand($statements)];
?>
 

ps_newbie

Nicht mehr ganz neu hier

AW: Zufallstext mit Ajax (?) laden

zum txt-File komm ich dann erst noch ...

mein Browser sieht genau so aus:


Die Index-Datei so:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>AJAX</title>
<script type="text/javascript" src="Ajax.js"></script>
<script type="text/javascript">

var ajax = new Ajax();
function ladeContent(){
ajax.get('random.php', function(){ callback(); });
}

function callback() {
if (ajax.request.readyState == 4) {
document.getElementById('content').innerHTML = ajax.request.responseText;
}
}

</script>
</head>
<body>
<div id="content"></div>
<input type="button" onclick="ladeContent();" />
</body>
</html>

dazu die ajax.js und random.php gemäss oben
 

sokie

Mod | Web

AW: Zufallstext mit Ajax (?) laden

Lösung (wie schon indirekt angedeutet - Vorraussetzung: jedes Statement steht in einer Zeile):
random.php
PHP:
 <?
$statements = file('meineDatei.txt');
echo $statements[array_rand($statements)];
?>
da ist mir der Teil doch entgangen...:uhm:
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.642
Beiträge
1.538.514
Mitglieder
67.559
Neuestes Mitglied
Andi Schäfer
Oben