javascript variable auswerten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • javascript variable auswerten

    Hi zusammen,

    Ich benutze folgende jquery Abfrage um einen Benutzernamen auf bereits vorhanden bei der Registrierung zu checken:

    Quellcode

    1. <script type="text/javascript">
    2. $(document).ready(function() {
    3. $('#usernameLoading').hide();
    4. $('#username').blur(function(){
    5. $('#usernameLoading').show();
    6. $.post("helper.php", {
    7. username: $('#username').val()
    8. }, function(response){
    9. $('#usernameResult').fadeOut();
    10. setTimeout("finishAjax('usernameResult', '"+escape(response)+"')", 400);
    11. });
    12. return false;
    13. });
    14. });
    15. function finishAjax(id, response) {
    16. $('#usernameLoading').hide();
    17. $('#'+id).html(unescape(response));
    18. $('#'+id).fadeIn();
    19. }
    Alles anzeigen


    die helper.php sieht folgendermaßen aus:

    Quellcode

    1. <?php
    2. include("functions.php");
    3. echo check_username($username);
    4. ?>


    Die Function sieht so aus:

    Quellcode

    1. function check_username($username){
    2. dbconn();
    3. $sql = mysql_query("SELECT * FROM userdata WHERE username = '$username' LIMIT 1");
    4. $result = mysql_fetch_assoc($sql);
    5. $res = mysql_affected_rows();
    6. if($res == "1"){
    7. //return '<span style="color:#f00">Vergeben</span>';
    8. return "1";
    9. }
    10. else
    11. {
    12. //return '<span style="color:#0c0">OK</span>';
    13. return "0";
    14. }
    15. }
    Alles anzeigen


    Im HTML sieht die Auswertung folgendermaßen aus:

    Quellcode

    1. <span id="usernameLoading"><img src="img/ajax-loader.gif" alt="Ajax Indicator" /></span><span id="usernameResult"></span>


    Funktioniert soweit auch einwandfrei. Ich bekomme ne 1 wenn der Benutzername vergeben ist, und ne 0 wenn er frei ist. Nun habe ich aber noch eine Fehlerauswertung auf der Seite welche folgendermaßen aussieht:

    Quellcode

    1. function formcheck() {
    2. form = document.registerform;
    3. error = "";
    4. var validate ="<?php echo $sum ?>";
    5. var username_check = "<?php echo $ucheck; ?>";
    6. //Textfelder überprüfen --->
    7. if (form.firstname.value == "") {
    8. error = "Vorname fehlt\n";
    9. }
    10. if (form.lastname.value == "") {
    11. error += "Nachname fehlt\n";
    12. }
    Alles anzeigen


    Hier möchte ich noch einbauen das wenn ich in der Funktion username_check eine 1 bekomme hier die entsprechende fehlermeldung ausgegeben wird beim Absenden des Forms, weil, momentan wird dem Benutzer zwar angezeigt das der Benutzername vergeben ist, aber er kann dennoch das Formular abschicken, das möchte ich natürlich nicht.

    Merci vorab fürs drüberschaun!

    Grüße,
    Matthias
    Das Leben ist binär - du bist eine 1, oder eine 0
  • Hi,

    das kannst du nur machen, indem du auch mit JavaScript das Formular absendetst.
    Das kannst du einfach mittels submit() machen, wenn keine Fehler vorhanden sind.
    Zudem musst du denn auch den type von submit auf button stellen.

    Aber beachte, das Clientseitige Überprüfungen nur der Usability dienen und nicht die Serverseitigen Überprüfugnen ersetzen sollen.
  • Hi!

    Ich schicke das Formular mittels Javascript ab

    Quellcode

    1. <form name="registerform" action="<?php $PHP_SELF; ?>" method="POST" onSubmit="return formcheck()">


    oder?

    Wenn dem so ist, was muss ich dann ändern damit die erste funktion bei vergebenem usernamen die error funktion in die zweite schreibt? Dooferweise habe ich von Javascript soviel Ahnung wie ne Kuh vom Weitsprung :(

    Matze
    Das Leben ist binär - du bist eine 1, oder eine 0
  • Hi!

    Ja, firstname und lastname existieren, aber mein Problem ist das ich a, nicht weiß wie ich die Funktion usercheck auswerten kann, und b, ich nicht weiß wie ich dann anhand dieser Auswertung entweder in der anderen Funktion einen error patzieren kann oder eben nicht.

    Ich versuch es nochmal darzustellen:

    Quellcode

    1. <script type="text/javascript" src="overlib.js"><!-- overLIB (c) Erik Bosrup --></script>
    2. // Hier wird der Username geprüft und entweder wird ok oder vergeben in die ID im HTML zurückübergeben, das funktioniert.
    3. <script type="text/javascript" src="jquery.js"></script>
    4. <script type="text/javascript">
    5. $(document).ready(function() {
    6. $('#usernameLoading').hide();
    7. $('#username').blur(function(){
    8. $('#usernameLoading').show();
    9. $.post("helper.php", {
    10. username: $('#username').val()
    11. }, function(response){
    12. $('#usernameResult').fadeOut();
    13. setTimeout("finishAjax('usernameResult', '"+escape(response)+"')", 400);
    14. });
    15. return false;
    16. });
    17. });
    18. function finishAjax(id, response) {
    19. $('#usernameLoading').hide();
    20. $('#'+id).html(unescape(response));
    21. $('#'+id).fadeIn();
    22. error = "Benutzername bereits vergeben\n";
    23. } //finishAjax
    24. </script>
    25. // Hier endet die Funktion zur Prüfun des Usernames
    26. <script language="JavaScript">
    27. //Hier beginnt die Fehlerauswertung des Formulars, hat es Fehler kann das Formular nicht abgeschickt werden.[/b] Ist momentan ein Username vergeben wird dies zwar im id des HTML ausgegeben, das Formular kann aber dennoch abgeschickt werden. Das soll nicht sein.
    28. <!--
    29. function formcheck() {
    30. form = document.registerform;
    31. //error = "";
    32. var validate ="<?php echo $sum ?>";
    33. var username_check = "<?php echo $ucheck; ?>";
    34. //Textfelder überprüfen --->
    35. if (form.firstname.value == "") {
    36. error = "Vorname fehlt\n";
    37. }
    38. if (form.lastname.value == "") {
    39. error += "Nachname fehlt\n";
    40. }
    41. if (form.password.value != form.password_retype.value) {
    42. error += "Die Passwörter stimmen nicht überein\n";
    43. }
    44. if (form.email.value != form.email_retype.value) {
    45. error += "Die Emailadressen stimmen nicht überein\n";
    46. }
    47. if (form.verify.value != validate) {
    48. error += "Verifizierung stimmt nicht!\n";
    49. }
    50. if (username_check != "0") {
    51. error += username_check;
    52. }
    53. if(form.agb.checked == false){
    54. error += "Bitte stimmen Sie unseren AGB's zu!\n";
    55. }
    56. if(form.use_legal.checked == false){
    57. error += "Bitte stimmen Sie unseren Nutzungsbedingungen zu!\n";
    58. }
    59. if (form.email.value == "") {
    60. error += "Emailadresse fehlt\n";
    61. }
    Alles anzeigen
    Das Leben ist binär - du bist eine 1, oder eine 0
  • Um gezielt Inhalte zwischen dem Server und dem Browser hin und her schicken zu können, benutzt man mitlerweile die gut verbreitete Möglichkeit über JSON:

    Bei jQuery kenn ich mich nicht gut genug aus, denke aber, dass man das in deinem Fall über die Funktion jQuery.getJSON lösen würde.
    Auch in der Wiki findest du von unserem großen Spezialisten einen wunderbaren und anschaulichen Eintrag über das Thema: [wiki]JSON: PHP und JavaScript[/wiki]