Ankündigung

Einklappen
Keine Ankündigung bisher.

onClick window.confirm, nichts passiert

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • onClick window.confirm, nichts passiert

    Grüße,

    Ich versuche über einen Link einen Datensatz aus meiner Datenbank zu löschen. Funktioniert ganz gut. Aber wie das mit dem löschen so ist, sollte man doch gefragt werden, ob man das wirklich tun möchte.

    Dazu hab ich folgendes geschrieben:

    Javascript:
    Code:
    function deleteData(type,title,URL) {
    	if (type == 'delete') {
    		text = 'Wollen Sie die News mit dem Titel "'+title+'" wirklich löschen?';
    	}
    	if (type == 'content') {
    		text = 'Wollen Sie den Inhalt mit dem Namen "'+title+'" wirklich löschen?';
    	}
    	if (window.confirm(text)) {
    		location.href = URL;
    	}
    }
    Seiten-Auszug:
    Code:
    <script type="text/javascript" src="../functions/deletedata.js"></script>
    
    <a href="send_news.php?delete=1" onclick="return deleteData(news,'Neue HP',this.href);" target="_self">
    	<img src="http://www.php.de/images/delete.png" border="0" height="16" width="16">
    </a>
    leider kommt keine Meldung zum bestätigen des löschens. Er geht sofort auf die nächste Seite.
    FireBug kann mir nich sagen, was ich falsch mache. Kann es einer von euch?

  • #2
    Hallo,

    return deleteData() sollte je nach Auswahl von window.confirm() ein TRUE oder FALSE zurückliefern. Das tut es nicht (return void/null). Ein location.href ist ebenfalls nicht notwendig, da du ja den href ausführen möchtest, wenn der Benutzer confirm() bestätigt hat.

    Code:
    function deleteData(type,title) { // URL entfernt
    	if (type == 'delete') {
    		text = 'Wollen Sie die News mit dem Titel "'+title+'" wirklich löschen?';
    	} else if (type == 'content') { // else-if hinzugefügt
    		text = 'Wollen Sie den Inhalt mit dem Namen "'+title+'" wirklich löschen?';
    	}
    	return confirm(text); // NEU
    }
    //..
    <a href="send_news.php?delete=1" onclick="return deleteData('news','Neue HP');">
    ..
    <!-- 'news' in Anführungszeichen, URL weggelassen -->
    </a>
    Abgesehen davon ist die Variable "text" nicht definiert, wenn du "news" übergibst.

    Was du tun solltest wäre sicherlich soetwas:
    Code:
    function deleteConfirm(anchor, type, title) {
      // ..
      if (confirm(text)) {
        anchor.href += "&confirmed=1";
        return true;
      }
      return false;
    }
    // ..
    <a href="send_news.php?delete=1" onclick="return deleteConfirm(this, 'title', 'Newstitel')">
    // ..
    // send_news.php:
    $delete = !empty($_GET["delete"]);
    $confirmed = !empty($_GET["confirmed"]);
    So kannst du bei deaktiviertem JavaScript oder JavaScript-Fehlern vor der Linkausführung verhindern, dass der Eintrag gelöscht wird, z.B. durch einen (Google)Bot oder eben einen JavaScript-Fehler in deiner confirm-Funktion.
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      bin nicht sicher ob ich das jetz alles richtig verstanden habe. Hab meine Funktion nach deinen Vorschlägen (die ich ein wenig verändert habe) abgeändert nur leider kommt da immernoch kein confirm.

      Code:
      function deleteData(type,title) {
      	if (type == 'delete') {
      		var text = 'Wollen Sie die News mit dem Titel "'+title+'" wirklich löschen?';
      	}
      	else if (type == 'content') {
      		var text = 'Wollen Sie den Inhalt mit dem Namen "'+title+'" wirklich löschen?';
      	}
      	if (confirm(text)) {
      		this.href += '?confirmed';  // was ist anchor? ich nehm erstmal this.href.. bei & findet er die url nicht also ? für $_GET
      		return true;
      	}
      	return false;
      }

      Kommentar


      • #4
        Zitat von TacoMe Beitrag anzeigen
        Hab meine Funktion nach deinen Vorschlägen (die ich ein wenig verändert habe) abgeändert nur leider kommt da immernoch kein confirm.
        Gibt es denn jetzt an der Stelle, wo du die Funktion aufrufst, eine Variable namens news? Bzw. was hast du am Aufruf geändert?

        FireBug kann mir nich sagen, was ich falsch mache.
        Doch, kann es vermutlich schon - allerdings nicht, wenn sofort nach dem Auftreten eines Fehlers das Formular abgeschickt wird.

        Deshalb wäre es clever, die Funktion zum Test erst mal an einer Stelle aufzurufen, die nicht den Wechsel auf eine neue Seite bewrikt.
        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

        Kommentar


        • #5
          Ich kann mich nur wiederholen:
          Abgesehen davon ist die Variable "text" nicht definiert, wenn du "news" übergibst.


          was ist anchor? ich nehm erstmal this.href.. bei & findet er die url nicht also ? für $_GET
          Du siehst doch dass ich als 1. Parameter this übergebe, der dann den anchor-Parameter darstellt. Wenn im <a href> schon ein Parameter übergeben wurde (?delete=1) musst du eben &confirmed=1 dranhängen (?delete=1&confirmed=1), andernfalls wird ?delete=1?confirmed=1 daraus, was keine gültige URL-Parametrisierung darstellt. Natürlich vorausgesetzt du möchtest übergeben, ob das Löschen vorher bestätigt wurde. Falls ja, sollte deine send_news.php auf den fehlenden Parameter confirmed das Löschen *nicht* anstossen, falls nein, brauchst du mit anchor.href auf keine Manipulation der des href vornehmen.
          "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

          Kommentar


          • #6
            Code:
            function deleteData(anchor,type,title) {
            	if (type == 'news') {
            		var text = 'Wollen Sie die News mit dem Titel "'+title+'" wirklich löschen?';
            	}
            	else if (type == 'content') {
            		var text = 'Wollen Sie den Inhalt mit dem Namen "'+title+'" wirklich löschen?';
            	}
            	if (confirm(text)) {
            		anchor.href += '&confirmed=1';
            		return true;
            	}
            	return false;
            }
            ist sie mit "var" nicht definiert? O,o was muss ich stattdessen nehmen? hab mich an anderen scripts orientiert gehabt. bin nich so versiert in java.


            @ChrisB: hab bei FireBug die option "Dauerhaft" eingeschaltet. Dachte damit würde er den Fehler dann, trotz weiterleitung zeigen.
            PHP-Code:
            <a href="send_news.php?delete=1" onclick="return deleteData(this,'news','Neue HP');" target="_self">
                <
            img src="http://www.php.de/images/delete.png" border="0" height="16" width="16">
            </
            a
            so sollte es doch eigentlich laufen oder nicht? tut es nämlich nicht.

            Kommentar


            • #7
              Zitat von TacoMe Beitrag anzeigen
              hab mich an anderen scripts orientiert gehabt. bin nich so versiert in java.
              JAVA ist immer noch etwas komplett anderes als JavaScript.


              PHP-Code:
              <a href="send_news.php?delete=1" onclick="return deleteData(this,news,'Neue HP');" target="_self"
              so sollte es doch eigentlich laufen oder nicht? tut es nämlich nicht.
              Die Frage, wo die Variable news definiert sein soll, ist damit immer noch offen.
              [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

              Kommentar


              • #8
                ooh da warn zwei logische fehler
                in der abfrage von "type" (anstatt 'delete' musste es 'news' heißen
                und bei "news" fehlten die anführungszeichen.
                das hat wohl einiges an verwirrung gestiftet.

                es läuft aber immernoch nicht. und das java nicht javascript ist, hilf mir irgendwie nicht weiter. ^^

                EDIT: hab grad gegooglet und folgendes herausgefunden:

                var
                This indicates you are about to declare a variable.
                also stimmts es doch. O,o

                Kommentar


                • #9
                  Zitat von TacoMe Beitrag anzeigen
                  es läuft aber immernoch nicht.
                  Meinen Vorschlag, wie man in Firebug vielleicht eine Fehlermeldung zu sehen bekommen könnte, hast du ja mit dem letzten gezeigten Code auch noch nicht umgesetzt.

                  (Dass man mit Firebug auch „richtig“ debuggen kann, sei mal nur am Rande erwähnt.)
                  [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                  Kommentar


                  • #10
                    es läuft aber immernoch nicht. und das java nicht javascript ist, hilf mir irgendwie nicht weiter. ^^
                    Sorry, aber es macht einen Unterschied, ob man nach Java oder Javascript googlet.
                    EDIT: hab grad gegooglet und folgendes herausgefunden:
                    Wahnsinn, DU hast eine Javascript Grundlage geooglet. Ich weiß nicht, wo das hier hinführen soll. Offensichtlich beschränkt sich Dein Programmieren auf Copy und Paste. Ich finde nicht, dass das hier unser Anspruch sein sollte.

                    In Erwartung Deiner schlechtgelaunten PN,

                    [MOD: Thread geschlossen]
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar

                    Lädt...
                    X