Validator-Checks per Ajax oder JS?

Trash

Erfahrenes Mitglied
Hallo,
ich habe mich in letzter Zeit etwas dem Thema "Ajax" gewidmet, weil ich mein neues Projekt auf neueren Technologien aufbauen möchte, damit die User Experience angenehm ist.

Derzeit ist es so, dass der User z.B. eine PW-Vergessen Funktion aufrufen kann. Per Ajax wird das ganze an ein JS-Script geschickt, dieses ruft eine PHP-Funktion auf, die z.B. in der DB nach der E-Mail Adresse sucht. Die Checks, ob überhaupt etwas in das Feld eingetragen wurde und ob es sich dabei um eine E-Mail Adresse handelt, finden derzeit in dem PHP-Skript statt.

Ist es nicht üblich/gängig aus Ressourcengründen diese Checks vor dem Server-Call mit JS zu prüfen und abzufangen und erst im erfolgreichen Fall die Ajax-Prozedur aufzurufen?

Danke
 
Natürlich ist das sinnvoll. Aber auf keinen Fall auf die Validierung in Javascript verlassen. Das heißt: PHP muss zusätzlich sicherheitshalber nochmal checken.
 
Danke!

Weißt Du zufällig auch, wie man am besten ein CSS-Popup entwickelt.

Wenn Du z.B. bei Facebook im Registrierungsformular auf die Erklärung unter dem Geburtstag klickst, öffnet sich eine Div-Box als Overlayer. Ich kann im Code aber nicht erkennen, wie das funktioniert da ich nicht sehe, dass durch JS die Eigenschaften des Divs verändert werden. Der Link zeigt nicht auf einen JS-Code.
 
Das ist ganz sicher nicht nur ein Layer. Die Verzögerung beim Anklicken zeigt, dass hier irgendwas per Ajax nachgeladen wird.

Ich bin sicher, dass das in Javascript umgesetzt ist. Tippe auf sowas wie (irgendwo zwischen den vielen Facebook-Scripts versteckt):

document.getElementById("bla").onclick;
 
Ich vermute mittlerweile auch folgendes. Das DIV wird per JS geöffnet (wie Du beschrieben hast). Im DIV selber wird aber ein Ajax-Skript ausgeführt. Sonst würde man auch nicht "Loading" im Fenster sehen, wenn man geklickt hat.

Danke. Ich schaue mir das nachher mal genauer an.
 
Hallo,
ich habe nochmal eine Frage hierzu.

Es ist derzeit so, dass ich in einem Formular alle Elemente per GET-Verfahren an einen JavaScript-Check schicke. Die JavaScript-Funktion checkt z.b, ob etwas eingegeben wurde und ob die E-Mail Adresse das richtige Format hat.

Code:
<form action="javascript:;" method="get" onSubmit="jsLoginCheck(document.getElementById('email').value,MD5(document.getElementById('pw').value),document.getElementById('stayLogin').checked);">

Ist dies der Fall wird im JS per Ajax eine URL aufgerufen, an die der Username und das verschlüsselte PW gehängt werden.

Wie kann ich es denn machen, dass die URL, die an mein Ajax-Script geleitet ist unter https:// läuft?

Derzeit ist es so, dass die URL z.B. folgendermaßen aufgebaut wird:

Code:
var url = './includes/login.php?email=' + email + '&pw=' + pw;
ajaxCheck(url);

Wenn ich nun aber die url oben so bearbeite, dass es eben eine URL mit Domainnamen ist und https:// davor ist, funktioniert das Skript nicht mehr.

Weiß jemand wie ich das mache?

Danke
 
..funktioniert das Skript nicht mehr.
Heisst?
Ist die url falsch?
Funktioniert https nicht richtig?
Ist https an einen anderen Server-Ordner gebunden, was nicht unüblich ist..?
Könntest Du Deine "umgewandelte" url dazu zeigen?

mfg chmee

p.s.: Ich bin ein wenig überrascht, dass mehrere JS-Befehle per Kommata getrennt funktionieren sollten..
Siehe form-action Code-Snippet von Dir.
 
Zuletzt bearbeitet:
Moin,
danke für die Antwort. Die JS-Befehle sind getrennt weil es Werte sind, die an die Funktion die aufgerufen wird (jsLoginCheck) übergeben werden: jsLoginCheck(email, pw, staylogin). Ich bekomme bei dem aufgerufenen AjaxScript dann einen "Error: 0". Ich dachte evtl. funktioniert es nicht, dass mein AjaxScript keine "vollständigen" URL's ausführen kann - oder kann es daran nicht liegen?

Ich hatte mir die URL ausgegeben und sie war korrekt:

Code:
https://domain.de/includes/login.php?email=eingegebeneEmail&pw=eingegebenesPW&stayLogin=false
 
Code:
function ajaxLoginCheck(url) {
	ajaxObject = false;

	if(window.XMLHttpRequest) {
		ajaxObject = new XMLHttpRequest();
		if(ajaxObject.overrideMimeType) {
			ajaxObject.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) {
		try {
			ajaxObject = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				ajaxObject = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	
	if(!ajaxObject) {
		alert('Sorry, AJAX does not work');
		return false;
	}

	ajaxObject.onreadystatechange = ajaxLoginCheckResponse;

	document.getElementById('loginBtn').disabled=true;
	document.getElementById('activeJob').innerHTML = '<img src="includes/images/ajax-loader.gif" />';
	document.getElementById('activeJob').style.visibility = 'visible';
	
	ajaxObject.open('GET', url, true);
	ajaxObject.send(null);

	return true;
}

function ajaxLoginCheckResponse() {
	if(ajaxObject.readyState == 4) {
		if(ajaxObject.status == 200) {
			var xmlData = ajaxObject.responseXML.documentElement;
			
			if(xmlData.getElementsByTagName("error")[0].firstChild.data == 'false'){
				var url = xmlData.getElementsByTagName("url")[0].firstChild.data;
				window.open(url, "_self");
			} else {
				document.getElementById('activeJob').innerHTML = '';
				document.getElementById('loginBtn').disabled= false;
				var text = xmlData.getElementsByTagName("text")[0].firstChild.data;
				
                         //.....anzeige des fehlertextes habe ich hier mal entfernt....
			}
		} else {
			alert('error: ' + ajaxObject.status.toString());
			return;
		}
	}
}
 

Neue Beiträge

Zurück