Aragorn: PHP aus JavaScript heraus aufrufen

Beitrag lesen

Hallo Rolf,

vielen Dank für die Antwort, das war sehr hilfreich. Im einzelnen:

  1. jQuery hatte ich heruntergeladen und im Test-Projekt eingefügt, aber leider hatte ich in der Zeile <script src="jQuery.js"></script> beim Kopieren eine kleine Korrektur vergessen. Außerdem hatte ich nach einer längeren Web-Entwicklungspause vergessen, wie im Firefox-Browser die Entwickler-Werkzeuge funktionieren. Nach einer Korrektur ist der $-Fehler jetzt verschwunden.

  2. Das res nie auf true gesetzt wird, ist klar, da fehlt in der Server-Unit noch der ganze Abschnitt mit MySQL, wo die Daten geprüft werden. Ich wollte mit dieser Konstruktion erst einmal sicher stellen, dass die Daten korrekt beim Server ankommen.

  3. Die Aufruf-Funktion im Login-Dialog habe ich wie folgt korrigiert:


// Login-Daten überprüfen
function checkLoginData(aMailAdr, aPassWd) {
	let res = false;
  let msg = "";
  try {
    let logResult = doChkLoginData(aMailAdr, aPassWd);
    if (logResult) {
      res = logResult.logRes;
      msg = logResult.logMsg;
    } else {
      msg = "Datenüberprüfung fehlgeschlagen."; 
    }
  } catch(err) {
    res = false;
    msg = "Fehler bei der Datenüberprüfung: " + err.message;
  }
  return {logRes: res, logMsg: msg};
}

// Login-Daten überprüfen: Durchführung
function doChkLoginData(aMailAdr, aPassWd) {
	let res = false;
  let msg = "";
  $.ajax({
    method: "POST",
    url: "serverLogin.php",
    data: {eMail: aMailAdr, passWd: aPassWd}
  }).done(function(response) {
    msg = response;
    return {logRes: res, logMsg: msg};
  });
}

Leider funktioniert das auch noch nicht korrekt. Ich hätte gerne, dass die (banale) Servermeldung in dem Dialog ankommt und wiedergegeben wird. Dann könnte ich die Server-Unit zuende programmieren. Tatsächlich meldet er aber "Datenüberprüfung fehlgeschlagen".

Offensichtlich funktioniert "doChkLoginData" nicht so, wie ich es gerne hätte. Er sollte dort solange warten, bis er Antwort vom Server bekommt oder eine gewisse Zeit verstrichen ist. Ich weiß nur nicht, wie ich das programmieren soll.