Skip to content

JSON PHP

JSON-ning keng tarqalgan qo'llanilishi veb-serverdan ma'lumotlarni o'qish va ularni veb-sahifada ko'rsatishdir.

Ushbu bobda siz mijoz (client) va PHP serveri o'rtasida JSON ma'lumotlarini qanday almashishni o'rganasiz.


PHP fayli

PHP-da JSON bilan ishlash uchun bir nechta o'rnatilgan funksiyalar mavjud. PHP-dagi obyektlarni json_encode() funksiyasi yordamida JSON-ga aylantirish mumkin:

PHP fayli (demo_file.php)

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

$myJSON = json_encode($myObj);

echo $myJSON;
?>

Mijoz tomonidagi JavaScript

Quyida AJAX orqali yuqoridagi PHP faylini so'raydigan JavaScript kodi keltirilgan:

Misol

Natijani JavaScript obyektiga aylantirish uchun JSON.parse() dan foydalaning:

js
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 massivi (Array)

PHP-dagi massivlar ham json_encode() funksiyasi yordamida JSON-ga aylantiriladi:

PHP fayli

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

$myJSON = json_encode($myArr);

echo $myJSON;
?>

Mijoz tomonidagi JavaScript

Natijani JavaScript massiviga aylantirish uchun JSON.parse() dan foydalaning:

js
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 va ma'lumotlar bazasi

PHP server tomonidagi til bo'lib, undan ma'lumotlar bazasiga kirish uchun foydalanish mumkin. Tasavvur qiling, serveringizda ma'lumotlar bazasi bor va siz mijozdan "customers" jadvalidagi dastlabki 10 ta qatorni so'ramoqchisiz.

  1. Mijoz tomonida qaytarilishi kerak bo'lgan qatorlar sonini ta'riflovchi JSON obyektini yarating.
  2. So'rovni yuborishdan oldin JSON obyektini matnga aylantiring va uni PHP sahifasining URL manziliga parametr sifatida yuboring:

Misol

js
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()

Misol tushuntirishi:

  • "limit" xususiyati va qiymatiga ega obyekt belgilanadi.
  • Obyekt JSON matniga aylantiriladi.
  • PHP fayliga JSON matni parametr sifatida yuboriladi.
  • So'rov natija (JSON sifatida) bilan qaytguncha kutiladi.
  • PHP faylidan olingan natija ko'rsatiladi.

PHP fayli tushuntirishi:

  • So'rovni json_decode() PHP funksiyasi yordamida obyektga aylantiring.
  • Ma'lumotlar bazasiga kiring va so'ralgan ma'lumotlar bilan massivni to'ldiring.
  • Massivni obyektga qo'shing va json_encode() funksiyasi yordamida obyektni JSON sifatida qaytaring.

Ma'lumotlardan foydalanish

Misol: Olingan ma'lumotlarni ko'rsatish

js
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 Metodi = POST

Serverga ma'lumot yuborganda ko'pincha HTTP POST metodidan foydalanish afzalroqdir. AJAX so'rovlarini POST metodi bilan yuborish uchun metodni va to'g'ri sarlavhani (header) ko'rsating.

Misol

js
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)

PHP faylidagi yagona farq — uzatilgan ma'lumotlarni olish metodi bo'ladi ($_POST o'rniga $_GET).