กลับไปหน้าหลัก
Asynchronous JavaScript And XML (AJAX) และ JSON

จากตอนที่แล้ว ได้ทำความรู้จักกับ AJAX และการรับส่ง ข้อมูล ระหว่าง javscript กับ WebServer ในรูปแบบ ของ XML กันไปแล้ว

โดย ปกติรูปแบบข้อมูลที่ใช้ในการแลกเปลี่ยนข้อมูลของ Ajax ก็คือ XML ซึ่งเราก็ต้อง รู้วิธีการจัดการ xml อีก มันคงจะง่ายกว่า ถ้าหากเราส่งผ่าน data structure แบบพื้นฐานเช่น array และ hash จาก server มาที่ javascript ทางฝั่ง client ได้เลย

ถ้าหากการส่ง array และ hash ไปมาระหว่าง server และ javascript ฝั่ง client สะดวก ก็ ต้องใช้ JSON สมมุติว่าเราต้องการส่งรายชื่อคนผ่าน XML เรา *อาจจะ* ต้องเขียน

<presonlist>

<person>
<firstName>Jonh</firstName>
<lastName>Smith</lastName>
<address>

<streetAddress>21 2nd Street</streetAddress>
<city>New York</city>
<state>NY</state>
<postalCode>10021</postalCode>
</address>
<phoneNumbers>212 555-1234,646 555-4567</phoneNumbers>
</person>

</personlist>

** จะนำไปใช้งาน ทางฝั่ง Client ก็คงต้องเขียน XML Parser กัน ลงแรงสักนิด ก็ใช้งานได้ **
** แต่ ถ้าส่งข้อมูลมาเป็น Data Structure เลย ก็จะใช้งานได้ง่ายกว่ากัน มาก **

คือ ถ้าเป็น JSON ก็จะใช้ [ ] แทน Array และ { } แทน Hash ( หรือ Associative array ) ก็อาจจะเขียนได้แบบข้างล่า

{

"firstName": "John",
"lastName": "Smith",
"address": {

"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]


}
และประโยชน์สูดสุดของ JSON ก็คือ สามารถ อ่านได้โดย eval คำสั่งเดียวใน javascript เช่น
var p;
var http_request = new XMLHttpRequest();
http_request.open( "GET", url, true );
http_request.onreadystatechange = function () {
    if ( http_request.readyState == 4 ) {
        if ( http_request.status == 200 ) {
            p = eval( "(" + http_request.responseText + ")" );
        } else {
            alert( "There was a problem with the URL." );
        }
        http_request = null;
    }
};
เราก็สามารถ เอา p มาใช้ได้ เลย (เห็นมั้ยละ ว่าเรียกใช้งาน ง่ายกว่า) เช่น
p.firstName, p.address.city, p.phoneNumbers[0]
  • p.firstName = John
  • p.address.city = New York
  • p.phoneNumbers[0] = 212 555-1234
แหล่งข้อมูลอ้างอิง
วิกิพีเดีย