Habe das Problem selber gefunden.
Beiträge von ST0RM
-
-
Hallo,
Ich habe ein Formular, welches 3 Selects enthält. Das erste wird durch eine SQL Abfrage gefüttert.
Das zweite ist von der Auswahl des ersten Abhängig.
Das Dritte ist wiederum von der Auswahl im zweiten abhängig.
Ich habe jetzt soweit das erste und das zweite Dropdown dynamisch füllen können.
Jedoch beim Dritten bekomme ich in der Console den Fehler: "Unexpected token [ in JSON at line 8".
Das ist mein HTML und Javascript zum befüllen:JavaScript
Alles anzeigen<form method=POST action="bestand-ausgabe.php"> <fieldset> <legend>Daten eingeben</legend> <div class="form-group"> <label for="typ">Typ: </label> <select id="typ" name="typ" class="form-control" onChange="getHersteller(this.value);"> <option value="all" selected>Alle</option> <?php foreach ($conn->query($sql2) as $row) { echo "<option value =" . $row['typ'] . ">" . $row['typ'] . "</option>"; } ?> </select> </div> <script type="text/javascript"> $("#typ").val($("#typ option:eq(0)").val()); </script> <div class="form-group"> <!-- Dropdown-Box erstellen und mit Hersteller Werten füllen --> <label for="hersteller">Hersteller: </label> <select id="hersteller" name="hersteller" class="form-control" onChange="getArtikel(this.value);"> <script type="text/javascript"> function getHersteller(val) { $.ajax({ type:"POST", url: "abfrage.php", data: { "typ": val }, success: function(data){ data = JSON.parse(data); var html = []; html.push('<option value="all">Alle</option>') for (var i in data) { var hersteller = data[i]; html.push('<option value="'+hersteller+'">'+hersteller+'</option>') } $("#hersteller").html(html.join('')); } }); } </script> <option value="all" selected>Alle</option> <?php foreach ($conn->query($sql3) as $row) { echo "<option value =" . $row['hersteller'] . ">" . $row['hersteller'] . "</option>"; } ?> </select> </div> <script type="text/javascript"> $("#hersteller").val($("#hersteller option:eq(0)").val()); </script> <div class="form-group"> <!-- Dropdown-Box erstellen und mit Modell Werten füllen --> <label for="artikel">Artikel: </label> <select id="artikel" name="artikel" class="form-control"> <script type="text/javascript"> function getArtikel(val) { var typ = document.getElementById("typ").value; $.ajax({ type:"POST", url: "abfrage.php", data: { "hersteller": val, "typ": typ }, success: function(data){ data = JSON.parse(data); var html = []; html.push('<option value="all">Alle</option>') var z = 1; for (var i in data) { html.push('<option value="'+data[i].ID+'">'+data[i].name+'</option>') z = z+1; } $("#artikel").html(html.join('')); } }); } </script> <option value="all" selected>Alle</option> <?php foreach ($conn->query($sql4) as $row) { echo "<option value =" . $row['ID'] . ">" . $row['artikel'] . "</option>"; } ?> </select>
Und hier meine PHP Datei welche die Abfragen macht:
PHP
Alles anzeigen<?php include "db.php"; $typ=$_POST['typ']; if($typ=='all'){ $response = array(); $query="SELECT DISTINCT hersteller FROM Artikel"; $stmt = $conn->prepare($query); $stmt->execute(array($typ)); $data = $stmt->fetchAll(); foreach ($data as $row) { $response[] = $row['hersteller']; } echo json_encode($response); }else{ $response = array(); $query1="SELECT DISTINCT hersteller FROM Artikel WHERE typ=?"; $stmt = $conn->prepare($query1); $stmt->execute(array($typ)); $data1 = $stmt->fetchAll(); foreach ($data1 as $row) { $response[] = $row['hersteller']; } echo json_encode($response); } if(isset($_POST['hersteller'])){ $hersteller=$_POST['hersteller']; $response = array(); $query2="SELECT ID, artikel FROM Artikel WHERE typ=? AND hersteller=?"; $stmt = $conn->prepare($query2); $stmt->execute(array($typ, $hersteller)); $data2 = $stmt->fetchAll(); foreach ($data2 as $row) { $response[] = array("ID" => $row['ID'], "artikel" => $row['artikel']); } echo json_encode($response); } ?>
Kann mir jemand sagen was der Fehler ist?
Mein Aray welches ich als Response zurück bekomme sieht so aus:
[{"ID":"1","artikel":"Optiplex 5050"},{"ID":"2","artikel":"Optiplex 7040"},{"ID":"10","artikel":"Latitude 5580"}]
Bin ein Javascript Neuling freu mich also über jede Hilfe.