php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-03-2018, 03:02
sepp
 Registrierter Benutzer
Links : Onlinestatus : sepp ist offline
Registriert seit: Aug 2007
Beiträge: 296
sepp kann nur auf Besserung hoffen
Standard Bin am Verzweifeln mit return

HALLO

Ich mache eine Ajaxabfrage beim Speichern, ob die Mailadresse bereits im System vorhanden ist. Soweit so gut aber der return will eifach nicht klappen.
Die Funktion rufe ich so auf
Code:
email_check();if (errM > 1){return false;}
Die Funktion selber ist dann.
Code:
function email_check(){  
if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
				 errM = JSON.parse(this.responseText);
				if(errM > 1){document.getElementById("email_p").style.background = '#FFDFDF';}
				 return errM;
			}
        };
		xmlhttp.open("GET","module/login/funktion.inc.php?mail="+document.getElementById("email_p").value+"&action=mail_abfrage",true);
		xmlhttp.send();
}
Die Abfrage und der Rückgabe Wert funktionieren denn die Funktion if(errM ... wird ausgeführt.

Das Problem ist das zwar der return geschiet aber, der Wert hinkt immer eins hinten nach. Sprich beim ersten Klick wird nichts retourniert und beim 2ten der wert aus dem ersten mal.
Habe auch schon versuchet den Wert mit
Code:
errM=0;
vorzugeben - ohne Erfolg.

Wenn ich das ganze nun mit einer var mache
Code:
 var errM = JSON.parse(this.responseText);
dann hinkt der Wert nicht mehr hinterher, jedoch klappt dann der return nicht mehr. Sprich ich bekomme den Wert nicht zurück. Auch hier habe ich schon diverses ausprobiert - ohne Erfolg.

Ich hoffe Ihr könnt mein Problem nachvollziehen und habt mir einen Tip um aus meiner verzweifelten Lage zu helfen.

Besten DAnke
Mit Zitat antworten
  #2 (permalink)  
Alt 15-03-2018, 10:57
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.544
h3ll befindet sich auf einem aufstrebenden Ast
Standard

AJAX ist asynchron. Dein if wird zeitlich vor JSON.parse ausgeführt. Du müsstest eine Function als Parameter übergeben und diese nach JSON.parse ausführen.

Oder besser und eleganter: Du verwendest ein Promise.
Mit Zitat antworten
  #3 (permalink)  
Alt 15-03-2018, 15:12
sepp
 Registrierter Benutzer
Links : Onlinestatus : sepp ist offline
Registriert seit: Aug 2007
Beiträge: 296
sepp kann nur auf Besserung hoffen
Standard

Promise ist Browserabhänging, ich tendiere daher zur Funktion.
Wie meinst Du das?
Ich habe es nun einmal so versucht leider ohne Erfolg. Bin ich so auf dem Holzweg?
Code:
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
				errM = JSON.parse(this.responseText);
				if(errM > 1){document.getElementById("email_p").style.background = '#FFDFDF';}
				returmail(errM);
			}
        };
Code:
email_check();
function returmail(errM){if (errM > 1){return false;}};

Geändert von sepp (15-03-2018 um 15:22 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 15-03-2018, 15:57
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.544
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sepp Beitrag anzeigen
Promise ist Browserabhänging
https://api.jquery.com/promise/
Mit Zitat antworten
  #5 (permalink)  
Alt 15-03-2018, 16:33
sepp
 Registrierter Benutzer
Links : Onlinestatus : sepp ist offline
Registriert seit: Aug 2007
Beiträge: 296
sepp kann nur auf Besserung hoffen
Standard

Shit, ich wollte doch nur einen kleinen Wert zurückgeben, muss ich mir da echt so einen Aufwand für einen Wert machen?

Warum geht das oben mit der Function nicht?
Mit Zitat antworten
  #6 (permalink)  
Alt 15-03-2018, 16:49
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.544
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sepp Beitrag anzeigen
Shit, ich wollte doch nur einen kleinen Wert zurückgeben, muss ich mir da echt so einen Aufwand für einen Wert machen?

Warum geht das oben mit der Function nicht?
Du machst dir irgendwie selber den Aufwand.

Code:
jQuery(function($) {
    $.getJSON('module/login/funktion.inc.php', {
        mail: $('#email_p').val(),
        action: 'mail_abfrage'
    }, function (result) {
        if (result > 1) {
            $('#email_p').css(backgroundColor: '#ffdfdf');
        }
    });
});
Warum eigentlich dieser komische Sprachenmischmasch? module, funktion, login, mail_abfrage, usw.? Warum nicht einfach alles in Englisch?

Ein return macht übrigens keinen Sinn. Vergiss das return.

Geändert von h3ll (15-03-2018 um 16:53 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 15-03-2018, 17:25
sepp
 Registrierter Benutzer
Links : Onlinestatus : sepp ist offline
Registriert seit: Aug 2007
Beiträge: 296
sepp kann nur auf Besserung hoffen
Standard

Danke für die Funktion, bringe sie zwar nicht zu funktionieren aber meine Funktion und die if mit dem Background geht ja, mein Problem ist der nächste Schritt, den Wert zurückzugeben an den ausgang der Funktion wo es aufgerufen wurde.
Der Teil läuft auch so bei mir
Code:
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
				errM = JSON.parse(this.responseText);
				if(errM > 1){document.getElementById("email_p").style.background = '#FFDFDF';}
das macht probleme
Code:
return errM;
P.S. Ich bin nicht so konsequent mit den Sprachen, da ich die Struktur auf Deutsch aufgebaut habe. Sorry
Mit Zitat antworten
  #8 (permalink)  
Alt 15-03-2018, 17:38
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.544
h3ll befindet sich auf einem aufstrebenden Ast
Standard

So?

Code:
jQuery(function($) {
    function email_check(success) {  
        $.getJSON('module/login/funktion.inc.php', {
            mail: $('#email_p').val(),
            action: 'mail_abfrage'
        }, function (result) {
            if (result > 1) {
                $('#email_p').css(backgroundColor: '#ffdfdf');
            }
            succes(result);
        });
    }
    
    email_check(function (result) {
        alert('email_check result: ' + result);
    });
});
Mit Zitat antworten
  #9 (permalink)  
Alt 15-03-2018, 17:48
sepp
 Registrierter Benutzer
Links : Onlinestatus : sepp ist offline
Registriert seit: Aug 2007
Beiträge: 296
sepp kann nur auf Besserung hoffen
Standard

Nein ich möchte den Wert aus der Abfrage als var in die Function übergeben aus welcher die Function email_check gestartet wurde.
hier hin
Code:
function xy()
{
  email_check();if (errM > 1){return false;}
}
Dein Code mit der Screibweise schaut sehr gut aus leider läuft das bei mir so nicht.
Mit Zitat antworten
  #10 (permalink)  
Alt 15-03-2018, 18:10
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.544
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sepp Beitrag anzeigen
Dein Code mit der Screibweise schaut sehr gut aus leider läuft das bei mir so nicht.
Naja, ohne zu wissen was bei dir passiert kann ich auch nix machen. Du musst schon ein nachvollziehbares Code-Beispiel posten.
Mit Zitat antworten
  #11 (permalink)  
Alt 15-03-2018, 20:38
sepp
 Registrierter Benutzer
Links : Onlinestatus : sepp ist offline
Registriert seit: Aug 2007
Beiträge: 296
sepp kann nur auf Besserung hoffen
Standard

In der Function xy passiert nur noch der Eintrag in die DB
Code:
          $.ajax({
            type: 'post',
            url: str,
            data: $('#form_daten_'+frm).serialize(),
            success: function () {
showData(id);

}
Also komplett
Code:
function sub(id,frm)
{

  email_check();if (errM > 1){return false;}
 $.ajax({
            type: 'post',
            url: str,
            data: $('#form_daten_'+frm).serialize(),
            success: function () {
showData(id);
}
function email_check(){  
if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
	errM = JSON.parse(this.responseText);
	return errM;
			}
        };
xmlhttp.open("GET","module/login/funktion.inc.php?mail="+document.getElementById("email_p").value+"&action=mail_abfrage",true);
		xmlhttp.send();
}

Geändert von sepp (15-03-2018 um 20:49 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 15-03-2018, 21:11
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.544
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Der Code ist für mich unlesbar. Bitte sauber formatieren.
Mit Zitat antworten
  #13 (permalink)  
Alt 15-03-2018, 21:39
sepp
 Registrierter Benutzer
Links : Onlinestatus : sepp ist offline
Registriert seit: Aug 2007
Beiträge: 296
sepp kann nur auf Besserung hoffen
Standard

So besser?
Code:
function sub(id,frm,str)
{
email_check();
if (errM > 1){return false;}
 $.ajax({
            type: 'post',
            url: str,
            data: $('#form_daten_'+frm).serialize(),
            success: function () {showData(id);}
           });
}
function email_check(){  
if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
	errM = JSON.parse(this.responseText);
	return errM;
			}
        };
       xmlhttp.open("GET","module/login/funktion.inc.php?mail="+document.getElementById("email_p").value+"&action=mail_abfrage",true);
	xmlhttp.send();
}

Geändert von sepp (15-03-2018 um 21:43 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 15-03-2018, 22:00
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.544
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Code:
jQuery(function ($) {
    
    function sub(id, frm, str) {
        email_check(function () {
            $.post(url, $('#form_daten_' + frm).serialize(), function () {
                showData(id);
            });
        });
    }
    
    function email_check(success) {  
        $.getJSON('module/login/funktion.inc.php', {
            mail: $('#email_p').val(),
            action: 'mail_abfrage'
        }, function (result) {
            if (result > 1) {
                $('#email_p').css(backgroundColor: '#ffdfdf');
            } else {
                success();
            }
        });
    }
    
});
Mit Zitat antworten
  #15 (permalink)  
Alt 15-03-2018, 22:57
sepp
 Registrierter Benutzer
Links : Onlinestatus : sepp ist offline
Registriert seit: Aug 2007
Beiträge: 296
sepp kann nur auf Besserung hoffen
Standard

Mit gewissen Anpassungen an Deine Super Arbeit und Deinem Script, habe ich es nun endlich geschafft - Danke dafür, meine Nerven danken es Dir ebenso

Alles verstehe ich nicht ganz denn wenn ich mit Deiner Zeile arbeite
Code:
$('#email_p').css(backgroundColor: '#ffdfdf');
dann hängt sich das script auf, wenn ich es ersetze mit.
Code:
document.getElementById("email_p").style.background = '#FFDFDF';
klappt es.

Und das
Code:
jQuery(function ($) {
habe ich auch nicht verwendet.

Da muss ich nochmal über die Bücher jQuery(function ($) { verstehe ich noch nicht.

ABER ES LÄUFT - HEUREKA

Geändert von sepp (16-03-2018 um 02:41 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hilfe ...Ich hab ein Problem mit UPDATE, bin am verzweifeln ! Ecki1111 SQL / Datenbanken 8 29-12-2010 17:39
blättern mit nummerierung will nicht funktionieren; ich bin am verzweifeln m-werk PHP Developer Forum 13 23-01-2006 11:08
bin am verzweifeln pur anfänger Projekthilfe 9 21-11-2005 11:18
bin am verzweifeln ... F1 ! F1 ! F1 ! Enno SQL / Datenbanken 2 28-08-2002 17:15
Bin am Verzweifeln Wotan PHP Developer Forum 3 18-12-2001 13:21

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

zechat ansehen zechat

Willst du Chat-Admin in deinem eigenen kostenlosen Chat mit vielen Funktionen sein, und soll der Chat dazu noch schnell und stabil auf alles Webservern sein? Wenn ja, ist deine Suche jetzt vorbei!

07.06.2018 Manuel1986 | Kategorie: AJAX/ Chat
bootstrapzero

kostenlose Bootstrap-Themes

05.06.2018 Berni | Kategorie: HTML5/ CSS-Responsive
Entwicklung einer Chat-Webanwendung mit Node.js

Einfacher Chat mit Node.js

26.05.2018 Berni | Kategorie: Node.js/ nodejs-Tutorials
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:30 Uhr.