2017-04-18 2 views
0

Ich habe ein Formular in einer HTML-Datei, die Daten an eine PHP-Datei sendet. Diese PHP-Datei wählt aus der Datenbank aus, transformiert die Ergebnisse in eine JSON-Datei und sendet sie zurück an die HTML-Datei.PHP-generierten JSON aus HTML

Ich würde gerne wissen, wie ich den JSON von der PHP bekommen kann; Ich bekomme die Antwort (von der Registerkarte Netzwerk im Inspektionsmenü), aber ich weiß nicht, wie ich es bekommen soll (um zu echo/alarmieren/ein Diagramm damit zu machen). Danke im Voraus!

Dies ist mein Code, um die Daten zu senden:

<script type="text/javascript"> 
    $(function() { 
     $(".datepicker").datepicker({ 
      minDate: new Date(2015, 8 - 1, 25), 
      maxDate: "0" 
     }); 
    }); 

$(function() { 
    // On form's submit, takes both input's values... 
    $('form').on('submit', function (e) { 
     var from = $("#from").val(); 
     var to = $("#to").val(); 
     // ...to compare them and displays an error if "to" is smaller than "from" 
     if(Date.parse(from) > Date.parse(to)){ 
      alert("Invalid Date Range"); 
     } 
     else{ 
      e.preventDefault(); 
      $.ajax({ 
       type: 'post', 
       url: 'classes/Select.php', 
       data: $('form').serialize(), 
       success: function() { 
        alert('data sent'); 
       } 
      }); 
     } 
    }); 
}); 
</script> 

Und dies ist der PHP-Teil, der die json (links heraus alle mysql Teil und so weiter) macht:

while ($arr = $query->fetch(PDO::FETCH_ASSOC)) { 
    echo json_encode($arr); 
+0

https://stackoverflow.com/help/mcve – julekgwa

+0

Haben Sie versucht, json_encode() verwenden? Kannst du deinen Code hier schreiben? –

+0

Sie müssen uns Beispielcode Ihrer Situation zeigen. –

Antwort

1

Da Sie eine Schleife in Ihrem PHP verwenden, erstellen Sie ein Array, das hält die Ergebnisse, wenn die Schleife beendet ist Echo die Ergebnisse mit json_encode;

$results = []; 
while ($arr = $query->fetch(PDO::FETCH_ASSOC)) { 
    $results[] = $arr; 
} 
echo json_encode($results); 

Dann in Ihrem Javascript

$.ajax({ 
     type: 'post', 
     url: 'classes/Select.php', 
     data: $('form').serialize(), 
     success: function(data) { 
      var results = JSON.parse(data); // convert the results to json 
      console.log(results); 
     } 
    }); 
+0

Es funktioniert! Könnte eine dumme Frage sein, aber warum muss ich meinen PHP-Code ändern? Nur um Objekte aus der JSON-Datei zu machen? – Newwt

+0

@Newwt so können die Daten sowohl mit Javascript und PHP kompatibel sein. Vergessen Sie nicht, es als Antwort zu markieren. – julekgwa

+0

Fertig, danke! – Newwt

1

In Ihrem Javascript Ajax Call-Code, haben Sie wahrscheinlich einen Erfolg: Schlüssel. Versuchen:

success: function(data) { console.log(data); } 
+0

Nein, funktioniert nicht. Es protokolliert die Daten, die ich sende, nicht die Daten, die ich erhalte. – Newwt

+0

Dein Code in der Post hat den Erfolg: function() ohne 'data' in den Klammern – delboy1978uk

1

, wenn Sie einen JSON-String Verwendung json_decode ($ json) erhalten und Sie erhalten den von Ihnen gewünschten Wert:

$json = '{"key-example": 12345}'; 

$obj = json_decode($json); 
print $obj->{'key-example'}; // 12345 
+0

tue ich schon, die Sache ist in der html Seite, wo ich nicht weiß was zu tun ist um den php-generierten json zu bekommen . – Newwt

+1

einen Ajax-Aufruf und drucken Sie die Antwortdaten nach dem Konvertieren in ein JSON mit: JSON.parse (Daten) – Slaiv206

+1

Ja, habe es jetzt gelöst, danke! – Newwt