keinen plan von ajax

warcraft9105

Erfahrenes Mitglied
hallo, ich habe da so ein kleines dartprogramm. Wenn jetzt jemand ausgemacht hat möchte ich, dass dieser Sieg gespeichert wird. Das Problem: die funktionen mit der Berechnung und so sind komplet JS aber mit JS kann man ja keine DB-Anfragen/-Abfragen machen. Nun meine Frage: Wie kann ich mit ajax so eine anfrage in mein script schreiben?
 
Eine recht allgemein gehaltene Frage. Ein Link zur Seite wäre sinnvoll. Man erfährt auch nicht, wieviel Erfahrung Du im Coding hast, also ob Du nur einige wenige Tipps brauchst oder ob Du am Liebsten den ganzen Code von Jemandem geschrieben haben möchtest.

Zum Thema:
Für eine Ajax-Komponente muss ein wenig umgedacht werden. zB kann man eine php-Datei schreiben, die die Anfrage von JS übernimmt, verarbeitet und etwas ausgibt, das dann im JS-Code verarbeitet wird.

Beispiel Schreiben :
Recht einfach. Du übergibst per httprequest und _Get die Daten an eine php-Datei, die das Speichern in die DB übernimmt. Die php-Datei gibt dann ein OK oder FAIL zurück. Lesen, eigentlich genauso.

Die Beispiele (Kapitel 18) hier sind toll, und man hat auch was zum Lesen - fürs Verständnis :D
http://www.galileocomputing.de/openbook/javascript_ajax/

mfg chmee
 
Naja die Site ist nur local auf meinem Rechner und wird auch nicht online gestellt werden.
Hört sich ziemlich kompliziert an. Hab gerade Schule, vll liegts daran:D
Script
Code:
function easy_game (i) 
    {
        var aktuell = document.getElementById('aktuell' + i).value;
        var geworfen1 = document.getElementById('1geworfen' + i).value;
        var geworfen2 = document.getElementById('2geworfen' + i).value;
        var geworfen3 = document.getElementById('3geworfen' + i).value;
        switch (geworfen1)
        {
            
        }
        switch (geworfen2)
        {
            
        }
        switch (geworfen3)
        {
           
        }
        
        var summe = aktuell - geworfen;
        document.getElementById('ergebnis' + i).innerHTML = summe;
    }
    
    function weiter_easy_game (i)
    {
        var ergebnis = document.getElementById('ergebnis' + i).innerHTML;
        var aktuell = document.getElementById('aktuell' + i).value;
        var geworfen1 = document.getElementById('1geworfen' + i).value;
        var geworfen2 = document.getElementById('2geworfen' + i).value;
        var geworfen3 = document.getElementById('3geworfen' + i).value;
        var erlaubt = document.getElementById('erlaubt' + i).value;
        erlaubt = erlaubt + 3;
        document.getElementById('erlaubt' + i).value = erlaubt;
        
        switch (geworfen1)
        {
           
        }
        switch (geworfen2)
        {
           
        }
        switch (geworfen3)
        {
            
        }
        
        if (aktuell > geworfen && geworfen <= 180)
        {
            document.getElementById('aktuell' + i).value = ergebnis;
            document.getElementById('1geworfen' + i).value = "000";
            document.getElementById('2geworfen' + i).value = "000";
            document.getElementById('3geworfen' + i).value = "000";
            document.getElementById('ergebnis' + i).innerHTML = "";
        }
        else
            if (aktuell == geworfen)
            {
                alert (spieler + " hat ausgemacht!");
                document.write("<p><a style='color:black; text-decoration:none;' href='./?d=hauptseite'>Neues Spiel</a></p>");
            }
            else
                if (aktuell < geworfen)
                alert (spieler + " hat überworfen!");
                
        if (geworfen == 0)
        alert ("Bist du schlecht :D!");
        
        if (geworfen > 180)
        alert ("Schau bitte nochmal aber du kannst nicht mehr als 180 werfen ;)!");
        
        if (geworfen == 180 && (aktuell > geworfen))
        alert ("Respekt, weida so!");
                            
    }
Seite
Code:
<? 
$punkte = $_POST['punkte'];

if (isset($_POST['spieler1']) == true)
{
    $spieler1 = $_POST['spieler1'];
    $anzspieler = 1;
}
if (isset($_POST['spieler2']) == true)
{
    $spieler2 = $_POST['spieler2'];
    $anzspieler = 2;
}
if (isset($_POST['spieler3']) == true)
{
    $spieler3 = $_POST['spieler3'];
    $anzspieler = 3;
}
if (isset($_POST['spieler4']) == true)
{
    $spieler4 = $_POST['spieler4'];
    $anzspieler = 4;
}

$spiel = $_POST['spiel'];
for ($i = 0; $i < $anzspieler; $i++)
{
$spnr = $i + 1;
?>
<p><span id="spieler<? echo $spnr;?>"><? echo $_POST['spieler' . $spnr];?></span></p>
<p>Aktuelle Punkte:<input type="text" id="aktuell<? echo $i;?>" value="<? echo $punkte;?>" ></p>
<p>Gerade geworfene Punkte:
<select id="1geworfen<? echo $i;?>" 
onChange="easy_game(<? echo $i;?>)">
</select>
<select id="2geworfen<? echo $i;?>" 
onChange="easy_game(<? echo $i;?>)">
</select>
<select id="3geworfen<? echo $i;?>" 
onChange="easy_game(<? echo $i;?>)">
</select>
</p>
<p>Restliche Punkte:<span id="ergebnis<? echo $i;?>"></span></p>
<p>Anzahl Würfe:<span id="wurf<? echo $i;?>"></span></p>
<p><input type="button" name="weiter" value="Nächster Durchgang" onClick="weiter_easy_game(<? echo $i;?>)"</p>
<hr><hr>
<?
}

ich hoffe du kommst recht;).. is ja glaub ich nicht so ideal geschrieben
 
Ohne mich jetzt in Dein Script einzuarbeiten gäbe es folgenden Tip:

Setze die Speicherung in einen JS-Event mit Namen onunload().
http://www.w3schools.com/jsref/jsref_onunload.asp - englisch

Problem ist aber, dass dieses Event nicht gestartet wird, wenn zB das Fenster geschlossen wird. Es gibt noch onbeforeunload(), kann aber dazu nicht sagen, ob der nur MS-Zeugs ist, oder allgemein unterstützt wird.

Also nochmal:
Du kannst in jener unbeforeunload() die Daten, die Du auf der Seite festhälst und für speichernswert erachtest mit zB ./speichern.php?Name=Alfons&Punkte=179&Wuerfe=3 an jene php-Datei übergeben, diese nimmt die Daten dann mit $_Get["Name"] an und kann sie per mySQL-Befehlen in eine DB schreiben.

Lesen kannst Du dann per onload()-event oder per Button-Druck einrichten, wie es beliebt.

Bitte nimm es mir nicht krumm, wenn hier Fehler drinstecken können, ich bin nicht der Profi-JSler, aber die Richtung sollte stimmen.

mfg chmee
 
leider kann ich mit $_GET[''] nicht so gut arbeiten wie $_POST['']. könntest du mir bitte ganz kurz erklären wie das genau funktioniert
 
Sorry, da muss ich passen. Habe bis jetzt alle Ideen/Projekte mit $_GET machen können. Ich lerne sowas, wenn ich es benötige..

Grundsätzlich wollte ich Dir Appetithäppchen vorgeben, ist alles nicht so schwer :D

mfg chmee
 

Neue Beiträge

Zurück