Wie übergebe ich JSON-Daten effizient aus dem PostgreSQL-JSONB-Feld an Javascript?
P粉596161915
P粉596161915 2023-09-12 14:52:26
0
1
602

Ich suche nach einer intelligenten Lösung, um einige JSON-Daten aus einer Postgresql-Datenbank mithilfe von Javascript zu verarbeiten. Ich weiß, dass ich die Datenbank über PHP lesen und die Daten als Array an Javascript übergeben muss.

Normalerweise würden Sie so etwas tun:

<?php
$phpArray = array('apple', 'banana', 'orange');
$jsonString = json_encode($phpArray);
?>

<script>
var jsonString = '<?php echo $jsonString ?>';
var jsArray = JSON.parse(jsonString);
</script>

Aber meine Daten sind bereits im Postgresql-JSONB-Feld im JSON-Format gespeichert. Daher hoffe ich, dass es eine Möglichkeit gibt, das Array effizienter zu übergeben, sodass der PC dieselben Daten nicht zweimal wiederholen muss.

root@monitor:~ $ sudo -u postgres psql
postgres=# \c monitor
monitor=# SELECT * FROM "drone001";

id |                                             data
---+-----------------------------------------------------------------------------------------------
 1 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 897, "Heading": 125, "DateTime": "2023-03-19 04:14:49"}
 2 | {"RX": 13.4, "Speed": 10.2, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:47"}
 3 | {"RX": 13.3, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:45"}
 4 | {"RX": 13.7, "Speed": 10.1, "Azimuth": 896, "Heading": 127, "DateTime": "2023-03-19 04:14:43"}
 5 | {"RX": 13.1, "Speed": 10.1, "Azimuth": 896, "Heading": 125, "DateTime": "2023-03-19 04:14:41"}
[...]

Dieser Code funktioniert nicht, sollte aber ungefähr zeigen, was ich vorhabe.

<?php
  require_once 'pgsql.php';

  $db = new database();
  $res = $db->select('drone001');
  $jsondata = array();
  while ($ds = pg_fetch_object($res)) {
    $jsondata[] = $ds->data;
  }
?>


<script type="text/javascript">
  var jsArray = JSON.parse('<?php echo $jsondata ?>');
  console.log(jsArray);
</script>

Es wäre großartig, wenn mir jemand den richtigen Weg weisen könnte.

P粉596161915
P粉596161915

Antworte allen(1)
P粉744831602

好吧,我今天感觉有点傻。我找到了解决方案,无需创建新数组,只需将所有字符串连接在一起即可。

<?php
  require_once 'pgsql.php';

  $db = new database();
  $res = $db->select('drone001');
  while ($ds = pg_fetch_object($res)) {
    $jsondata .= $ds->data . ",";
  }
  $jsondata = "[" . rtrim($jsondata, ",") . "]";
?>

<script type="text/javascript">
  var jsArray = JSON.parse('<?php echo $jsondata ?>');
  console.log(jsArray);
</script>
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!