JSON PHP
JSON ၏ ဘုံအသုံးပြုမှုမှာ ဝဘ်ဆာဗာတစ်ခုမှ ဒေတာကို ဖတ်ရန်နှင့် ဝဘ်စာမျက်နှာတစ်ခုတွင် ဒေတာကို ပြသရန်ဖြစ်သည်။
ဤအခန်းတွင် ကလိုင်းယင့်နှင့် PHP ဆာဗာတစ်ခုကြား JSON ဒေတာကို ဖလှယ်နည်းကို သင်ပေးပါမည်။
PHP ဖိုင်
PHP တွင် JSON ကိုကိုင်တွယ်ရန် built-in လုပ်ဆောင်ချက်အချို့ရှိသည်။
PHP လုပ်ဆောင်ချက် json_encode() ကို အသုံးပြု၍ PHP ရှိ အရာဝတ္ထုများကို JSON အဖြစ်သို့ ပြောင်းလဲနိုင်သည် -
PHP ဖိုင်
<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New
York";
$myJSON = json_encode($myObj);
echo $myJSON;
?>
Client JavaScript
ဤသည်မှာ အထက်ဖော်ပြပါ ဥပမာမှ PHP ဖိုင်ကို တောင်းဆိုရန် AJAX ခေါ်ဆိုမှုကို အသုံးပြု၍ client ပေါ်ရှိ JavaScript တစ်ခုဖြစ်သည်။
ဥပမာ
ရလဒ်ကို JavaScript အရာဝတ္ထုအဖြစ်သို့ ပြောင်းလဲရန် JSON.parse() ကိုသုံးပါ-
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 Array
PHP လုပ်ဆောင်ချက် json_encode() ကိုအသုံးပြုသည့်အခါ PHP ရှိ Arrays များကို JSON အဖြစ်သို့ ပြောင်းလဲသွားလိမ့်မည် -
PHP ဖိုင်
<?php
$myArr = array("John", "Mary", "Peter", "Sally");
$myJSON = json_encode($myArr);
echo $myJSON;
?>
Client JavaScript
ဤသည်မှာ အထက်ဖော်ပြပါ array ဥပမာမှ PHP ဖိုင်ကို တောင်းဆိုရန် AJAX ခေါ်ဆိုမှုကို အသုံးပြု၍ client ပေါ်ရှိ JavaScript တစ်ခုဖြစ်သည်။
ဥပမာ
ရလဒ်ကို JavaScript array အဖြစ်သို့ပြောင်းလဲရန် JSON.parse() ကိုသုံးပါ
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 ဒေတာဘေ့စ်
PHP သည် server side programming language တစ်ခုဖြစ်ပြီး ဒေတာဘေ့စ်တစ်ခုသို့ ဝင်ရောက်ရန်အတွက် အသုံးပြုနိုင်သည်။
သင့်ဆာဗာပေါ်တွင် ဒေတာဘေ့စ်တစ်ခုရှိသည်ကို မြင်ယောင်ကြည့်ပါ၊ သင်သည် "ဖောက်သည်များ" ဟုခေါ်သော ဇယားတစ်ခုရှိ ပထမတန်း 10 တန်းကို တောင်းဆိုသည့် client ထံမှ တောင်းဆိုချက်တစ်ခုပေးပို့လိုပါသည်။
ကလိုင်းယင့်တွင်၊ သင်ပြန်လိုသော အတန်းအရေအတွက်များကို ဖော်ပြသည့် JSON အရာတစ်ခုကို ပြုလုပ်ပါ။
သင်တောင်းဆိုချက်ကို ဆာဗာသို့မပို့မီ၊ JSON အရာဝတ္ထုကို စာကြောင်းအဖြစ်ပြောင်းပြီး PHP စာမျက်နှာ၏ url သို့ ကန့်သတ်ချက်တစ်ခုအဖြစ် ပေးပို့ပါ-
ဥပမာ
JavaScript object ကို JSON အဖြစ်သို့ ပြောင်းရန် JSON.stringify() ကိုသုံးပါ
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();
ဥပမာ ရှင်းပြထားသည်-
- "ကန့်သတ်" ပိုင်ဆိုင်မှုနှင့် တန်ဖိုးပါရှိသော အရာတစ်ခုကို သတ်မှတ်ပါ။
- အရာဝတ္ထုကို JSON စာကြောင်းအဖြစ် ပြောင်းပါ။
- ကန့်သတ်ချက်အဖြစ် JSON စာကြောင်းဖြင့် PHP ဖိုင်သို့ တောင်းဆိုချက်တစ်ခု ပေးပို့ပါ။
- တောင်းဆိုချက် ရလဒ် (JSON အဖြစ်) ပြန်လာသည်အထိ စောင့်ပါ
- PHP ဖိုင်မှရရှိသောရလဒ်ကိုပြသပါ။
PHP ဖိုင်ကို ကြည့်လိုက်ပါ။
PHP ဖိုင်
<?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 File က ရှင်းပြထားပါတယ်။
- PHP လုပ်ဆောင်ချက် json_decode() ကို အသုံးပြု၍ တောင်းဆိုချက်အား အရာဝတ္ထုအဖြစ်သို့ ပြောင်းပါ ။
- ဒေတာဘေ့စ်ကို ဝင်ရောက်ပြီး တောင်းဆိုထားသော အချက်အလက်များဖြင့် ခင်းကျင်းတစ်ခုကို ဖြည့်ပါ။
- အခင်းအကျင်းကို အရာဝတ္ထုတစ်ခုသို့ ပေါင်းထည့်ကာ json_encode() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ အရာဝတ္တုကို JSON အဖြစ် ပြန်ပို့ ပါ။
Data ကိုသုံးပါ။
ဥပမာ
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 နည်းလမ်း = ပို့စ်
ဆာဗာသို့ ဒေတာပေးပို့သည့်အခါ HTTP POST
နည်းလမ်းကို အသုံးပြုခြင်းသည် မကြာခဏဆိုသလို အကောင်းဆုံးဖြစ်သည်။
နည်းလမ်းကို အသုံးပြု၍ AJAX တောင်းဆိုမှုများကို ပေးပို့ရန် POST
၊ နည်းလမ်းနှင့် မှန်ကန်သော ခေါင်းစီးကို သတ်မှတ်ပါ။
ဆာဗာသို့ပို့လိုက်သောဒေတာသည် ယခုနည်းလမ်းအတွက် အကြောင်းပြချက်တစ်ခုဖြစ်ရမည် send()
-
ဥပမာ
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 ဖိုင်၏ တစ်ခုတည်းသော ခြားနားချက်မှာ လွှဲပြောင်းဒေတာရယူသည့် နည်းလမ်းဖြစ်သည်။
PHP ဖိုင်
$_GET အစား $_POST ကိုသုံးပါ
<?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);
?>