Ankündigung

Einklappen
Keine Ankündigung bisher.

Javascript Array auslesen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Javascript Array auslesen

    Hallo zusammen,

    ich stehe gerade auf dem Schlauch. Ich möchte das zurückgegeben Array auslesen und es in ein Input Feld schreiben. In diesem fall die neue ID. Ich kann das kompltte Array ausgeben aber nicht auf den einzelnen Wert im Array zugreifen.
    genauer gesagt auf die ID.
    Vielen Dank im voraus.

    HTML-Code:
                $("#speichern").click(function(e){
                
                    var inpObj = document.getElementById("vertraege");
                    if (inpObj.checkValidity() == false) {
                        document.getElementById("vertraege").focus();
                        return false;
                    }
                        
                                
                    var inpObj = document.getElementById("betreff");
                        if (inpObj.checkValidity() == false) {
                            
                            document.getElementById("betreff").focus();
                             return false;
                        }
                        
                        var inpObj = document.getElementById("datum");
                        if (inpObj.checkValidity() == false) {
                            
                            document.getElementById("datum").focus();
                             return false;
                        }
                        
                e.preventDefault();
                 $.post('vertraege_speichern=speichern',     $("#formular").serialize(), function(data){
                 
                // show the response
             $('#response').html(data);            
              
                 
            }).fail(function() {
             
                // just in case posting your form failed
                alert( "Posting failed." );
                 
            })
            
            .done(function() {
             
                // just in case posting your form failed
                alert( "Posting erfolgreich." );
                 
            });
     
            // to prevent refreshing the whole page page
            return false;
            });
    PHP-Code:

    if ( $_GET['vertraege_speichern'] == "speichern")
    {

    //Ein Auszug
    $test_array[] = array(     "vertraege" =>   $firmendaten_id ,
                                        
    "id" =>   $id
                                                                                                
                                        
                                                
    );                                                
                                
                
                
                echo 
    json_encode($test_array);
                                
                                
                                } 

  • #2
    ich weiß jetzt nicht so recht, was Du da treibst, Selektoren pure JS, dann wieder jQuery? Ist $.post nun jQuery oder irgendetwas anderes. Ist es jQuery stimmt etwas mit den Parametern nicht,

    Kommentar


    • #3
      Zitat von kaminbausatz Beitrag anzeigen
      Ist es jQuery stimmt etwas mit den Parametern nicht,
      definitiv. Die angegebene URL und die erwartete sind unterschiedlich.

      Kommentar


      • #4
        Hallo zusammen,

        es ist zum Mäuse melken. Wenn ich folgendes Script ausführe bekomme ich mein Array als Alert ausgegeben.

        Erfolgreich:[{"id":"79","text":"79"}]

        Code:
        $("form").submit(function(event) {
            // Das eigentliche Absenden verhindern
            event.preventDefault();
            
            // Das sendende Formular und die Metadaten bestimmen
            var form = $(this); // Dieser Zeiger $(this) oder $("form"), falls die ID form im HTML exisitiert, klappt übrigens auch ohne jQuery ;)
            var data   = form.serialize(); // baut die Daten zu einem String nach dem Muster vorname=max&nachname=Müller&alter=42 ... zusammen
                
            // Der eigentliche AJAX Aufruf
            $.ajax({
                url : "https://www.xxx.de/scripte/public/php/functions_test?&vertraege_speichern=speichern",
                type : "POST",
                data : data,
            }).done(function (data) {
                // Bei Erfolg
                alert("Erfolgreich:" + data);
        
        
            }).fail(function() {
                // Bei Fehler
                alert("Fehler!");
            }).always(function() {
                // Immer
                alert("Beendet!");
            });
        });
        Wenn ich
        Code:
           alert("Erfolgreich:" + data.id);
        einsetze kommt "Erfolgreich:undefined".

        Hier noch einen Auszug aus meiner PHP Datei.

        PHP-Code:
        $response = array();
                                                    
        $response[] = array( "id" => $id,"text" =>  htmlspecialchars_decode($id));
                                                    
                                                echo 
        json_encode($response); 

        Vielen Dank für eure bisherigen Antworten.

        liegen Gruss Joachim

        Kommentar


        • #5
          Wahrscheinlich schickt dein PHP-Script nicht den richtigen Content-Type:

          PHP-Code:
          header('Content-Type: application/json'); 

          Kommentar


          • #6
            Habe ich in mein PHP script eingefügt. Leider keinen Erfolg. So knapp davor und doch so weit weg, ich suche immer noch eine Lösung.

            lg Joachim

            Kommentar


            • #7
              Zitat von JAssfalg Beitrag anzeigen
              Leider keinen Erfolg.
              Dann schau nach, warum es nicht funktioniert. Überprüfe den HTTP-Header, den der Browser erhält. Und lass dir mit console.log() den Wert ausgeben, den du erhältst.

              Kommentar


              • #8
                Zitat von JAssfalg Beitrag anzeigen
                Hallo zusammen,

                . . .

                Ich möchte das zurückgegeben Array auslesen und es in ein Input Feld schreiben.

                . . .

                Es ist zum Mäuse melken. Wenn ich folgendes Script ausführe bekomme ich mein Array als Alert ausgegeben.

                Erfolgreich: [{"id":"79","text":"79"}]

                . . .
                Hi,

                das ist doch schon mal gar nicht so schlecht

                Beispiel: Folgende Funktion sendet eine ID aus einem select-Feld an ein PHP-Script.

                Das PHP-Script sucht jetzt in einer Tabelle anhand der ID den Vor- und Nachnamen einer Person und

                gibt ID, Vorname, Nachname zurück.

                Code:
                function SendFormData(){
                 var user_id = document.getElementById("sel_user_id");
                 if(user_id.value == 0){
                  alert("Ungültige Auswahl");
                  return;
                 }
                 /*
                 * Parameter definieren.
                 */
                 var select_data = "id=" + user_id.value;
                 /* Das Zielscript aufrufen, mit den Formulardaten als Parameter. */
                 $.post("__form_ajax_daten.php", select_data)
                 
                 /* Senden mißlungen? */
                 .error(function(){alert("Ein Fehler ist aufgetreten.");})
                 
                 /* Funktionsaufruf um Daten vom Zielscript auszugeben. */
                 .success(function(data) {insertData(data);
                 });
                }
                Ergebnisbeispiel: {"id":"9","vorname":"Paul","nachname":"Kamps"}

                Im Parameter .success wird eine Funktion (insertData(data)) aufgerufen, die die empfangenen Daten ins Formular einträgt.

                Code:
                /*
                * Empfangene Daten ins Formular eintragen
                */
                function insertData(data){
                 var response = $.parseJSON(data);
                 document.getElementById("id").value = response["id"];
                 document.getElementById("vorname").value = response["vorname"];
                 document.getElementById("nachname").value = response["nachname"];
                }
                Gruß
                Günni

                Kommentar


                • #9
                  $.parseJSON() ist unfug, das macht eigentlich jQuery von selber.

                  Kommentar


                  • #10
                    Probier mal den dataType anzugeben.
                    Code:
                         $.ajax({
                            url : "https://www.xxx.de/scripte/public/php/functions_test?&vertraege_speichern=speichern",
                            type : "POST",
                            dataType: "json",
                            data : data,
                        }).done(function (data) {
                            // Bei Erfolg        
                    alert("Erfolgreich:" + data);
                    Erfolgreich:[{"id":"79","text":"79"}]
                    Das sieht nach einem Array mit einem Objekt aus, ist das ein Browser Konsolenoutput? Wie versuchst du auf die Daten zuzugreifen?
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      JAssfalg

                      mach Dich nicht verrückt, im Grunde hast Du das doch schon alles ganz prima hinbekommen, Daten kommen an und Du kannst sie mit alert ausgeben.

                      mach´s mal so:

                      HTML-Code:
                      ......
                      }).done(function (data) {
                              // Bei Erfolg
                              //alert("Erfolgreich:" + data);
                             var myJsonArray = JSON.parse(data);
                              alert(myJsonArray[0].id);
                          }).fail(function() {....

                      Kommentar


                      • #12
                        alert() ist kein brauchbare Werkzeug zum Debuggen. Das ist genauso Unfug wie unter PHP Ausgaben mit echo.

                        Verwende console.log()!

                        Und JSON-Parsing ist Käse. Wie oft muss ich das noch sagen? Das übernimmt jQuery automatisch. Vorausgesetzt, der Webserver schickt auch den richtigen HTTP-Header. Ob das wirklich passiert, die Frage wurde noch nicht beantwortet.

                        Wie wärs also mal mit sauberem und systematischem Arbeiten und weniger blind Herumprobieren und wirren Ratschlägen?

                        Kommentar


                        • #13
                          Ich glaube es ist mir peinlich. Ich habe mir eine Datei per Include eingefügt und in dieser Datei hatte ich ein Leerzeichen vor dem <?php . Keine Ahnung wie ich das hinbekommen habe. Hier das Ergebnis.

                          Vielen Dank an alle.

                          PHP-Code:
                              $msg = array();
                                      
                          $msg = array( "id" =>   $id,
                             
                          "firmendaten" => $firmendaten_id,                                                                                                                                    
                           
                          "firmendaten_id" => $firmendaten_id                                                                                                                                
                                                                      
                                                                                              
                          );                                                
                                                              
                                                                  
                          header('content-type: application/json');
                                                                  echo 
                          json_encode($msg); 
                          Code:
                                      $("#speichern").click(function(e){
                              // Das eigentliche Absenden verhindern
                                 e.preventDefault();
                              
                              var inpObj = document.getElementById("vertraege");
                                          if (inpObj.checkValidity() == false) {
                                              document.getElementById("vertraege").focus();
                                              return false;
                                          }
                                              
                                                      
                                          var inpObj = document.getElementById("betreff");
                                              if (inpObj.checkValidity() == false) {
                                                  
                                                  document.getElementById("betreff").focus();
                                                   return false;
                                              }
                                              
                                              var inpObj = document.getElementById("datum");
                                              if (inpObj.checkValidity() == false) {
                                                  
                                                  document.getElementById("datum").focus();
                                                   return false;
                                              }
                              
                              var form = $("#formular");
                              var data   = form.serialize();
                              
                                
                                 $.ajax({  
                                  type : "POST",  
                                  url : "../../scripte/public/php/functions.php?&vertraege_speichern=speichern" ,  
                                  data : data,  
                                  success : function(arrayPHP){  
                                      $("#id").val(arrayPHP['id']);
                                      $('#firmendaten').val(arrayPHP['firmendaten']).trigger("change");
                                      $("#firmendaten_id").val(arrayPHP['firmendaten_id']);
                                          
                                      alert("Der Vetrag wurde erfolgreich gespeichert.");
                                      
                                              }
                               });    
                              });

                          Kommentar


                          • #14
                            Zitat von hellbringer Beitrag anzeigen

                            Dann schau nach, warum es nicht funktioniert. Überprüfe den HTTP-Header, den der Browser erhält. Und lass dir mit console.log() den Wert ausgeben, den du erhältst.
                            Die Richtung hat schon gestimmt.

                            Kommentar


                            • #15
                              Zitat von JAssfalg Beitrag anzeigen
                              Die Richtung hat schon gestimmt.
                              Freut mich, dass es geklappt hat und dass die wahre Fehlerquelle beseitigt wurde!

                              Eigentlich hätte header() aber eine Fehlermeldung werfen müssen. Fehlermeldungen erleichtern die Fehlersuche ungemein. Du solltest dich in deinem Interessen darum kümmern, dass du diese auf deinem Webserver auch zu Gesicht bekommst. Üblicherweise landen diese in einem Error-Log am Webserver, wenn dieser richtig konfiguriert ist.

                              Kommentar

                              Lädt...
                              X