Ajax: บันทึก
Submitted by wd on Tue, 2007-03-06 16:48
จากการทดลอง Ajax ในครั้งก่อน
เราใช้พารามิเตอร์ตัวเดียวในการส่งผ่านระหว่างบราวเซอร์กับฟังก์ชั่นในจาวาสคริปต์
ต่อมาต้องการทดลองส่งผ่านพารามิเตอร์มากขึ้น ปรากฎว่าทำไม่ได้
สาเหตุเป็นเพราะค่าตัวแปรในฟังก์ชั่นของจาวาสคริปต์ เป็นแบบตัวแปรท้องถิ่น
ไม่สามารถส่งผ่านออกไประหว่างฟังก์ชั่นได้ (ต้องกลับไปอ่านจาวาสคริปต์อีกทีนึง)
บันทึกวิธีการแก้ปัญหาแบบชั่วคราว ด้วยการกำหนดค่าตัวแปรเป็นแบบ global ไว้ข้างนอก
แล้วส่งผ่านระหว่างฟังก์ชั่นด้วยการใช้ตัวแปรที่กำหนดไว้แทน
ทดสอบด้วย...
- ตรงนี้เป็นลิงก์ โหลดไฟล์ ajax1.txt มาแสดงที่ตำแหน่ง
id001 - ตรงนี้เป็นลิงก์ โหลดไฟล์ ajax2.txt มาแสดงที่ตำแหน่ง
id002 - ตรงนี้เป็นลิงก์ โหลดไฟล์ ajax1.txt มาแสดงที่ตำแหน่ง
id002 - ตรงนี้เป็นลิงก์ โหลดไฟล์ ajax2.txt มาแสดงที่ตำแหน่ง
id001
ตรงนี้เป็นบรรทัดที่จะแทรกข้อความที่รับจาก AJAX
- ตำแหน่ง
id001 :
แทรกตรงนี้ - ตำแหน่ง
id002 :
แทรกตรงนี้
โค๊ดมีดังนี้
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Test AJAX</title>
</head>
<body>
<script language="javascript" type="text/javascript">
var url = "";
var htmlid = "";
function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest(); //Not IE
} else {
if(window.ActiveXObject) {
return new ActiveXObject("Microsoft.XMLHTTP"); //IE
} else {
alert("Your browser doesn't support the XmlHttpRequest object. Better upgrade to Firefox.");
}
}
}
var receiveReq = getXmlHttpRequestObject();
function d_say(argv1,argv2) {
if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
url = argv1
htmlid = argv2
receiveReq.onreadystatechange = d_handle;
receiveReq.open("GET",url, true);
receiveReq.send(null);
}
}
function d_handle() {
if (receiveReq.readyState == 4) {
document.getElementById(htmlid).innerHTML = receiveReq.responseText;
}
}
</script>
<p>จากการ<a href="/node/6">ทดลอง Ajax ในครั้งก่อน</a>
เราใช้พารามิเตอร์ตัวเดียวในการส่งผ่านระหว่างบราวเซอร์กับฟังก์ชั่นในจาวาสคริปต์
ต่อมาต้องการทดลองส่งผ่านพารามิเตอร์มากขึ้น ปรากฎว่าทำไม่ได้
สาเหตุเป็นเพราะค่าตัวแปรในฟังก์ชั่นของจาวาสคริปต์ เป็นแบบตัวแปรท้องถิ่น
ไม่สามารถส่งผ่านออกไประหว่างฟังก์ชั่นได้ (ต้องกลับไปอ่านจาวาสคริปต์อีกทีนึง)</p>
<p>บันทึกวิธีการแก้ปัญหาแบบชั่วคราว ด้วยการกำหนดค่าตัวแปรเป็นแบบ global ไว้ข้างนอก
แล้วส่งผ่านระหว่างฟังก์ชั่นด้วยการใช้ตัวแปรที่กำหนดไว้แทน</p>
<p>ทดสอบด้วย...
<ul>
<li>ตรงนี้เป็นลิงก์ <a href="javascript:d_say('/files/ajax1.txt','id001');">โหลดไฟล์ ajax1.txt มาแสดงที่ตำแหน่ง <code>id001</code></a></li>
<li>ตรงนี้เป็นลิงก์ <a href="javascript:d_say('/files/ajax2.txt','id002');">โหลดไฟล์ ajax2.txt มาแสดงที่ตำแหน่ง <code>id002</code></a></li>
<li>ตรงนี้เป็นลิงก์ <a href="javascript:d_say('/files/ajax1.txt','id002');">โหลดไฟล์ ajax1.txt มาแสดงที่ตำแหน่ง <code>id002</code></a></li>
<li>ตรงนี้เป็นลิงก์ <a href="javascript:d_say('/files/ajax2.txt','id001');">โหลดไฟล์ ajax2.txt มาแสดงที่ตำแหน่ง <code>id001</code></a></li>
</ul>
</p>
<p>ตรงนี้เป็นบรรทัดที่จะแทรกข้อความที่รับจาก AJAX
<ul>
<li>ตำแหน่ง <code>id001 : </code><div id="id001">แทรกตรงนี้</div></li>
<li>ตำแหน่ง <code>id002 : </code><div id="id002">แทรกตรงนี้</div></li>
</ul>
</body>






Recent comments