Antwort an „Aragorn“ verfassen

Hallo zusammen,

ich bin ein erfahrener Windows-Entwickler und habe mich vor längerer Zeit etwas in die Web-Programmierung eingearbeitet (Html, PHP, JavaScript, CSS). Dabei habe ich u.a. für mein Windows-Projekt eine rudimetäre Home-Page erstellt. Das Hauptproblem dabei waren Dialoge zum Anmelden und Registrieren. Ich habe viele Web-Seiten studiert und am Ende auch eine gute Lösung gefunden, wobei ich vorerst das Speichern der Daten in einer DB außen vor gelassen habe.

Kürzlich habe ich mir MySQL angeeignet, eine passende DB erstellt und versuche nun, das Anmelden usw. fertig zu stellen. Leider gibt es dabei ein kleines Problem, dass ich nicht lösen kann. Meine Dialoge sind vollständig in JavaScript geschrieben und beötigen ansonsten nur noch css für das Layout. Dies bedeutet, das der jeweilige Dialog ausschließlich beim Client erstellt wird und dort werden auch die Daten erfasst und formal überprüft. Wenn das funktioniert hat, müssen die Daten via PHP zum Server übertragen werden, und dort in der MySQL DB geprüft bzw. gespeichert werden. Für die DB-Aktionen gibt es viele Beispiele, und sobald ich z.B. für das Login die Daten eMail, PW aus dlgLogin.js nach serverLogin.php übertragen habe, sollte der Rest kein Problem mehr sein.

Einige Tage habe ich das mit fetch versucht, leider ohne Erfolg. Heute habe ich im Netz ein Beispiel mit jQuery und Ajax gefunden, das ich bei mir nachbauen konnte und das auch funktioniert hat. Analog habe ich das auf mein Login übertragen, aber da bekomme ich einen Fehler, den ich nicht nachvollziehen kann. Im Vorgängerbeispiel steht auf einer Html-Seite im Kopf ein Verweis auf jQuery

<script src="jQuery.js"></script>

und im Scriptbereich im Kern das Folgende:

<script>
...
  $.ajax({
    method: "POST",
    url: "wrap.php",
    data: { text: frmText2 }
  }).done(function( response ) {
    $("p.broken").html(response);
  });

</script>

Dabei ist mir schleierhaft, worauf sich das $-Zeichen vor dem ajax bezieht und beim Versuch, das zu googeln bekomme ich nur Seiten über einen niederländischen Fußballverein oder grundlegende Seiten über JavaScript. Ich habe das nun sinngmäß auf mein Login übertragen und versuche vorerst nur, die Daten zu übertragen und eine entsprechende Textmeldung zurückzubekommen. Textauschnitte aus dlgLogin.js:

// Login-Daten überprüfen
function checkLoginData(aMailAdr, aPassWd) {
	let res = false;
  let msg = "";
  try {
    let logResult = doChkLoginData(aMailAdr, aPassWd);
    res = logResult.logRes;
    msg = logResult.logMsg;
  } 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};
}

sowie die Unit serverLogin.php:

<?php
// Empfangene Daten auslesen
$eMailAdr = $_POST['eMail'];
$passWord = $_POST['passWd'];
// Antwort (vorerst)
$textAnswer = "eMail-Adresse: " + $eMailAdr + ", Passwort: " + $passWord;
echo $textAnswer;
?>

Beim Testen bekomme ich genau das als Fehler, was ich oben auch nicht verstanden habe, nämlich die Meldung "$ is not defined". Der Unterschied zwischen den beiden Ajax-Beispielen ist, dass im ersten Fall im Kopf die Referenz auf jQuery.js eingetragen ist, während in meiner dlgLogin.js Unit ein solcher Verweis nicht möglich ist, sondern im Hauptformular steht, aus dem heraus der Dialog aufgerufen wird.

Ich hoffe, dass mir jemand weiterhelfen kann.

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen