Ankündigung

Einklappen
Keine Ankündigung bisher.

Dynamischer Seitenaufruf + Verifizieren der Angabe + mysql Datenaustausch?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dynamischer Seitenaufruf + Verifizieren der Angabe + mysql Datenaustausch?

    Hey Leute,

    vor kurzen habe ich mich mit JS und Ajax beschäftigt, da ich CMS - die ich erstelle - gerne "modern" haben würde.

    Ich habe angefangen PHP und mySQL über Tutorials und Videos zu lernen und bisher immer fast ausschließlich damit gearbeitet, d.h. jedes Mal komplett neuer Website Aufbau, egal bei was für Aufrufen.

    Nun habe ich nach Scripts gesucht, die dynamisches Laden von Seiten erlauben (damit meine ich, dass nur der "Content" der Seite ausgetauscht wird.

    Eine Menu, der Header, Footer etc. soll unberührt bleiben.

    Das hat mithilfe der Codebeispiele von hier sehr gut geklappt.

    Hier die zwei Funktionen:

    Code:
    function ajaxpage(url, containerid)
    {
    	var page_request = false
    	if (window.XMLHttpRequest) // if Mozilla, Safari etc
    	page_request = new XMLHttpRequest()
    	else if (window.ActiveXObject) // if IE
    	{
    		try 
    		{
    			page_request = new ActiveXObject("Msxml2.XMLHTTP")
    		}
    		catch (e)
    		{
    			try
    			{
    				page_request = new ActiveXObject("Microsoft.XMLHTTP")
    			}
    			catch (e){}
    		}
    	}
    	else
    		return false
    	page_request.onreadystatechange=function()
    	{
    		loadpage(page_request, containerid)
    	}
    	page_request.open('GET', url, true)
    	page_request.send(null)
    }
    
    function loadpage(page_request, containerid)
    {
    	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
    		document.getElementById(containerid).innerHTML=page_request.responseText
    }
    Allerdings hatte ich für meine Registrierungspage bereits eine Formvalidation in Javascript erstellt.

    Die sieht in etwa so aus:

    Code:
    function verify()
    {
        var error = false;
        if((document.getElementsByName("name")[0].value) == "")
        {
            error = true;
        }
        else if(... // mehrere Felder werden gecheckt
        }
        if(error==true)
        {
            return false;
        }
    	else
    		return true;
    }
    Beim Senden der Form:

    Code:
    <form action="index.php" method=post onsubmit="return verify();">
    Die Funktion funktioniert aufgerufen wunderbar, allerdings nicht wenn ich die Seite dynamisch lade. Dann kann ich die Form immer abschicken, als ob die Funktion nicht aufgerufen wird.

    Hat jmd. ne Idee woran das liegt? JavaScript und AJAX sind für mich ziemliches Neuland, bin da also noch sehr uninformiert.


    Meine zweite Frage bezieht sich auf den Datenaustausch mit einer MySQL Tabelle.

    Meine Idee ist, beim Registrieren, zuerst die Angaben durch die Java Funktion laufen zu lassen und dann nochmal über eine PHP Funktion zu testen und an die DB zu senden (falls Leute JS deaktivieren etc.).

    Ist das generell ein guter Ansatz oder übersehe ich hier etwas / sollte ich es anders machen etc?


  • #2
    Zitat von marcial Beitrag anzeigen
    Nun habe ich nach Scripts gesucht, die dynamisches Laden von Seiten erlauben (damit meine ich, dass nur der "Content" der Seite ausgetauscht wird.

    Eine Menu, der Header, Footer etc. soll unberührt bleiben.
    Damit bastelt man im wesentlichen die massiven Usability-Nachteile nach, die Frames schon immer hatten ...


    Die Funktion funktioniert aufgerufen wunderbar, allerdings nicht wenn ich die Seite dynamisch lade. Dann kann ich die Form immer abschicken, als ob die Funktion nicht aufgerufen wird.

    Hat jmd. ne Idee woran das liegt?
    Daran, dass per innerHTML irgendwo reinsetzter JS-Code nicht ausgeführt wird.

    Wege, das zu umgehen, sind im Netz dokumentiert; auch bei den großen Frameworks kann man sich diesbezüglich sicher was abschauen.

    Meine Idee ist, beim Registrieren, zuerst die Angaben durch die Java Funktion laufen zu lassen und dann nochmal über eine PHP Funktion zu testen und an die DB zu senden (falls Leute JS deaktivieren etc.).
    Selbstverständlich sind Daten serverseitig immer zu validieren.
    Clientseitige Validierung kann man als reines Komfortmerkmal noch hinzunehmen, wenn man möchte (spart dem Nutzer einen Request, wenn die Daten noch fehlerhaft sind).

    Und bitte nicht JAVA und JavaScript in einen Topf schmeißen, das sind vollkommen unterschiedliche Sprachen.

    Kommentar


    • #3
      Daran, dass per innerHTML irgendwo reinsetzter JS-Code nicht ausgeführt wird.
      Alles klar, das hilft mir schonmal weiter. Danke.

      Serverseitiges validieren ist klar, wollte nur wissen ob der Ansatz so Macken hat oder ok ist.

      Und bitte nicht JAVA und JavaScript in einen Topf schmeißen, das sind vollkommen unterschiedliche Sprachen.
      Keine Angst, wie du vll. mal selbst gemerkt hast, schreibt man schnell mal Java, hat aber davor permanent von JS geredet ist in der JavaScript Sektion und es sollte auch offensichtlich sein was gemeint ist.

      Kommentar


      • #4
        Wie Chris schon geschrieben hat würde ich AJAX nicht unbedingt zum Nachladen kompletter Seiten verwenden. Dann muss man sich wieder um den Zurück-Knopf kümmern und andere nervige Dinge. AJAX macht IMHO vor allem dann Sinn, wenn man abgeschlossene Einheiten hat (wie z.B. Datentabellen) oder wenn man "Dialogfenster" anzeigen möchte. Also sprich: Immer dann, wenn sich nur Teile des Contents ändern. Ändert sich der ganze Content macht es keinen Unterschied (abgesehen vom erwähnten Zurück-Knopf oder der sich bewegenden Lade-Anzeige im Browser).

        Das Problem wurde ja auch schon beschrieben (JS wird nicht ausgeführt wenn es einfach so eingefügt wird). Generell würde ich bei hohem AJAX / JS - Anteil auf eines der JS Frameworks gehen. JQuery hat die größte Anhängerschaft, ich bevorzuge allerdings MooTools. Man muss sich zwar in die Frameworks einarbeiten, erspart sich aber eine Menge Kopfzerbrechen. So ist bei Mootools z.B. das Ausführen von in AJAX-Responses eingebettetem JS, das setzen einer einzigen Option.

        Kommentar


        • #5
          Vielen Dank für die ausführliche Erklärung.

          Ich denke ich werde dann doch eher Abstand von Ajax und JS halten und es nur in ganz bestimmten Fällen benutzen (zusätzl. Client seitige Validierung von Eingabe etc.), anstelle zu versuchen es für "alles" zu benutzen.

          Gruß,

          marcial

          Kommentar

          Lädt...
          X