JS Tutoriaal

JS TUIS JS Inleiding JS Waarheen JS Uitset JS Verklarings JS sintaksis JS Kommentaar JS veranderlikes JS Laat JS Konst JS-operateurs JS Rekenkunde JS Opdrag JS datatipes JS Funksies JS Voorwerpe JS Events JS Strings JS String Metodes JS String Soek JS String Templates JS nommers JS-nommermetodes JS Skikkings JS Skikking Metodes JS Array Sorteer JS Skikking Iterasie JS Array Konst JS Datums JS Datum Formate JS Datum Kry Metodes JS Datum Stel Metodes JS Wiskunde JS Random JS Booleans JS Vergelykings JS Voorwaardes JS Skakelaar JS Loop Vir JS Loop For In JS Loop Vir Van JS Loop Terwyl JS Break JS Iterables JS-stelle JS Kaarte JS tipe JS Tipe Omskakeling JS Bitwise JS RegExp JS foute JS Bestek JS Hysing JS Streng modus JS hierdie sleutelwoord JS Arrow Funksie JS Klasse JS JSON JS Ontfouting JS Stylgids JS Beste Praktyke JS foute JS prestasie JS Voorbehou Woorde

JS weergawes

JS weergawes JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Edge JS Geskiedenis

JS Voorwerpe

Voorwerpdefinisies Voorwerp Eienskappe Voorwerp Metodes Voorwerp vertoon Voorwerptoebehore Voorwerpkonstrukteurs Voorwerpprototipes Object Iterables Voorwerpstelle Voorwerpkaarte Voorwerpverwysing

JS Funksies

Funksie definisies Funksie parameters Funksie Aanroep Funksie oproep Funksie Pas toe Funksie sluitings

JS Klasse

Klasintro Klas Erfenis Klas Staties

JS Async

JS Terugbelle JS Asynchroon JS Beloftes JS Async/Wag

JS HTML DOM

DOM Inleiding DOM Metodes DOM-dokument DOM Elemente DOM HTML DOM-vorms DOM CSS DOM-animasies DOM-geleenthede DOM Gebeurtenis Luisteraar DOM-navigasie DOM nodusse DOM Versamelings DOM Node lyste

JS Browser BOM

JS venster JS skerm JS ligging JS Geskiedenis JS Navigator JS Popup Alert JS Tydsberekening JS koekies

JS Web API's

Web API Inleiding Webvorms API Webgeskiedenis API Webberging API Webwerker API Web haal API Web Geolocation API

JS AJAX

AJAX Intro AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

JS JSON

JSON Inleiding JSON-sintaksis JSON vs XML JSON-datatipes JSON Ontleed JSON Stringify JSON-voorwerpe JSON-skikkings JSON-bediener JSON PHP JSON HTML JSON JSONP

JS vs jQuery

jQuery keurders jQuery HTML jQuery CSS jQuery DOM

JS grafika

JS grafika JS Canvas JS Plot JS Chart.js JS Google Chart JS D3.js

JS Voorbeelde

JS Voorbeelde JS HTML DOM JS HTML-invoer JS HTML-voorwerpe JS HTML-geleenthede JS Blaaier JS Redakteur JS Oefeninge JS Vasvra JS Sertifikaat

JS Verwysings

JavaScript-voorwerpe HTML DOM-voorwerpe


JSON PHP


'n Algemene gebruik van JSON is om data vanaf 'n webbediener te lees en die data op 'n webblad te vertoon.

Hierdie hoofstuk sal jou leer hoe om JSON-data tussen die kliënt en 'n PHP-bediener uit te ruil.


Die PHP-lêer

PHP het 'n paar ingeboude funksies om JSON te hanteer.

Voorwerpe in PHP kan in JSON omgeskakel word deur die PHP-funksie json_encode() te gebruik :

PHP lêer

<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";

$myJSON = json_encode($myObj);

echo $myJSON;
?>

Die kliënt JavaScript

Hier is 'n JavaScript op die kliënt wat 'n AJAX-oproep gebruik om die PHP-lêer van die voorbeeld hierbo aan te vra:

Voorbeeld

Gebruik JSON.parse() om die resultaat in 'n JavaScript-objek om te skakel:

const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  const myObj = JSON.parse(this.responseText);
  document.getElementById("demo").innerHTML = myObj.name;
}
xmlhttp.open("GET", "demo_file.php");
xmlhttp.send();


PHP Skikking

Skikkings in PHP sal ook omgeskakel word na JSON wanneer die PHP-funksie json_encode() gebruik word :

PHP lêer

<?php
$myArr = array("John", "Mary", "Peter", "Sally");

$myJSON = json_encode($myArr);

echo $myJSON;
?>

Die kliënt JavaScript

Hier is 'n JavaScript op die kliënt wat 'n AJAX-oproep gebruik om die PHP-lêer van die skikkingsvoorbeeld hierbo aan te vra:

Voorbeeld

Gebruik JSON.parse() om die resultaat in 'n JavaScript-skikking om te skakel:

var xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  const myObj = JSON.parse(this.responseText);
  document.getElementById("demo").innerHTML = myObj[2];
}
xmlhttp.open("GET", "demo_file_array.php", true);
xmlhttp.send();

PHP-databasis

PHP is 'n bedienerkant-programmeertaal en kan gebruik word om toegang tot 'n databasis te verkry.

Stel jou voor dat jy 'n databasis op jou bediener het, en jy wil 'n versoek daarheen stuur vanaf die kliënt waar jy vra vir die 10 eerste rye in 'n tabel genaamd "kliënte".

Op die kliënt, maak 'n JSON-voorwerp wat die aantal rye beskryf wat jy wil terugstuur.

Voordat jy die versoek na die bediener stuur, omskep die JSON-voorwerp in 'n string en stuur dit as 'n parameter na die url van die PHP-bladsy:

Voorbeeld

Gebruik JSON.stringify() om die JavaScript-objek in JSON om te skakel:

const limit = {"limit":10};
const dbParam = JSON.stringify(limit);
xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  document.getElementById("demo").innerHTML = this.responseText;
}
xmlhttp.open("GET","json_demo_db.php?x=" + dbParam);
xmlhttp.send();

Voorbeeld verduidelik:

  • Definieer 'n objek wat 'n "limiet" eienskap en waarde bevat.
  • Skakel die voorwerp om in 'n JSON-string.
  • Stuur 'n versoek na die PHP-lêer, met die JSON-string as 'n parameter.
  • Wag totdat die versoek terugkeer met die resultaat (as JSON)
  • Vertoon die resultaat wat van die PHP-lêer ontvang is.

Kyk na die PHP-lêer:

PHP lêer

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_GET["x"], false);

$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$stmt = $conn->prepare("SELECT name FROM customers LIMIT ?");
$stmt->bind_param("s", $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

PHP-lêer verduidelik:

  • Skakel die versoek om in 'n objek deur die PHP-funksie json_decode() .
  • Toegang tot die databasis, en vul 'n skikking met die gevraagde data.
  • Voeg die skikking by 'n voorwerp en gee die voorwerp terug as JSON deur die json_encode() funksie te gebruik.

Gebruik die data

Voorbeeld

xmlhttp.onload = function() {
  const myObj = JSON.parse(this.responseText);
  let text = "";
  for (let x in myObj) {
    text += myObj[x].name + "<br>";
  }
  document.getElementById("demo").innerHTML = text;
}

PHP metode = POST

Wanneer data na die bediener gestuur word, is dit dikwels die beste om die HTTP POST-metode te gebruik.

Om AJAX-versoeke met die POSTmetode te stuur, spesifiseer die metode en die korrekte kopskrif.

Die data wat na die bediener gestuur word, moet nou 'n argument vir die send()metode wees:

Voorbeeld

const dbParam = JSON.stringify({"limit":10});
const xmlhttp = new XMLHttpRequest();
xmlhttp.onload = function() {
  const myObj = JSON.parse(this.responseText);
  let text ="";
  for (let x in myObj) {
    text += myObj[x].name + "<br>";
  }
  document.getElementById("demo").innerHTML = text;
}
xmlhttp.open("POST", "json_demo_db_post.php");
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send("x=" + dbParam);

Die enigste verskil in die PHP-lêer is die metode om die oorgedra data te kry.

PHP lêer

Gebruik $_POST in plaas van $_GET:

<?php
header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_POST["x"], false);

$conn = new mysqli("myServer", "myUser", "myPassword", "Northwind");
$stmt = $conn->prepare("SELECT name FROM customers LIMIT ?");
$stmt->bind_param("s", $obj->limit);
$stmt->execute();
$result = $stmt->get_result();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>