RSS กับ XML (ตอนที่ 2)
ปัญหาในการทำเว็บไซต์ ที่ต้องดึงข่าว RSS มาแสดง มักพบว่าถ้ามี RSS หลายตัว จะพบว่าการโหลดเว็บ จะอืดเป็นเรือเกลือเลยทีเดียว ทำให้ผมคิดว่าน่าจะมีการนำ AJAX มาใช้งานเพื่อให้ในการโหลดเว็บไม่ต้องรอให้เสียเวลา นอกจากนี้การใช้ AJAX ยังจะทำให้การเปลี่ยนแปลงรูปแบบการแสดงผลทำได้ง่ายขึ้นอีกด้วย และสามารถทำได้ด้วยตัวเองอย่างไม่ยากเย็นนัก
ในการอ่านข่าว เราจะเอา url ของเนื้อหาข่าวมากำหนดให้กับโปรแกรม โปรแกรมจะไปดึงข่าวมา (ด้วย AJAX) เมื่อได้รับข่าวสารเรียบร้อยแล้ว ก็ใช้ Javascript แยกเอาส่วนต่างๆของเอกสาร XML ที่ได้รับมาออก เพื่อจัดการแสดงผลต่อไป
LoadXMLDoc เป็นฟังก์ชั่นเพื่อ load ข่าวครับโดยที่ url คือ url ของเอกสารข่าว, handler คือ พื้นที่ (div) สำหรับแสดงผล โดยส่งค่ามาเป็น id ของพื้นที่นั้นๆ และ language เป็นการกำหนดภาษาของเอกสาร เช่น utf-8, tis-620 เป็นต้น
ฟังก์ชั่นจะไปทำการเรียกเอาเอกสาร XML ด้วยไฟล์ rss.php มาทำงานเพื่อรับเอาเอกสาร XML มาจากเว็บไซต์ต้นทาง เทคนิคในการอ่านเอกสารเราก็ใช้ฟังก์ชั่น file_get_contents อ่านเอาเอกสารที่กำหนดมาแล้วคืนค่ากลับไปยัง AJAX ต่อไป
ในการอ่านข่าว เราจะเอา url ของเนื้อหาข่าวมากำหนดให้กับโปรแกรม โปรแกรมจะไปดึงข่าวมา (ด้วย AJAX) เมื่อได้รับข่าวสารเรียบร้อยแล้ว ก็ใช้ Javascript แยกเอาส่วนต่างๆของเอกสาร XML ที่ได้รับมาออก เพื่อจัดการแสดงผลต่อไป
function LoadXMLDoc(url, handler, language) {
document.getElementById(handler).innerHTML="Loding...";
var req=Inint_AJAX();
if (req!=null) {
req.onreadystatechange=function() {
if (req.readyState==4) {
if (req.status==200) {
xml=req.responseXML;
parseFeed(req.responseXML, handler);
}
}
};
req.open("GET", "rss.php?feed="+url+"&lang="+language, true);
req.send(null);
}
}
LoadXMLDoc เป็นฟังก์ชั่นเพื่อ load ข่าวครับโดยที่ url คือ url ของเอกสารข่าว, handler คือ พื้นที่ (div) สำหรับแสดงผล โดยส่งค่ามาเป็น id ของพื้นที่นั้นๆ และ language เป็นการกำหนดภาษาของเอกสาร เช่น utf-8, tis-620 เป็นต้น
<?php
// rss.php
$language=$_GET['lang'];
header("Content-Type: application/xml; charset=$language");
echo file_get_contents($_GET['feed']);
ฟังก์ชั่นจะไปทำการเรียกเอาเอกสาร XML ด้วยไฟล์ rss.php มาทำงานเพื่อรับเอาเอกสาร XML มาจากเว็บไซต์ต้นทาง เทคนิคในการอ่านเอกสารเราก็ใช้ฟังก์ชั่น file_get_contents อ่านเอาเอกสารที่กำหนดมาแล้วคืนค่ากลับไปยัง AJAX ต่อไป