Ajax ง่ายๆ กับ jQuery

On November 27, 2011, in JavaScript, Programming, by iAmbAsE

บทความนี้จะเสนอเกี่ยวกับการใช้งาน Ajax ใน jQuery ซึ่งหาใครไม่มี src ของ jQuery ก็ให้เข้าเว็บ jquery.com เพื่อเข้าไปโหลด src มา

จริงๆ แล้ว jQuery ก็มีคู่มือการใช้งานของ jQuery อยู่แล้ว ซึ่งสามารถเข้าไปดูใน docs.jquery.com ซึ่ง Ajax ที่จะเขียนในบทความนี้ คู่มือการใช้งานของ Ajax ก็อยู่ในหน้า api.jquery.com/category/ajax/ คู่มือก็มีอยู่แล้ว แล้วผมจะสอนอะไรอีก งั้นผมก็จะแปลไทยให้คุณเข้าใจเพิ่มขึ้นแล้วกันนะครับ

ใน jQuery ผมแนะนำให้ใช้ function ของ jQuery.post() หรือ jQuery.get() ส่วน jQuery.ajax() ผมว่าวุ่นวายไป

มาเริ่มจาก jQuery.post() กันนะครับ post กับ get คนเขียนเว็บก็จะรู้กันว่าคืออะไร ซึ่ง function ตัวนี้จะส่งข้อมูลลักษณะการใช้ HTTP POST ซึ่ง function ตัวนี้จะให้เราใส่ parameter 4 ตัวดังนี้

jQuery.post(url[,data][,success(data,textStatus,jqXHR)] [,dataType]);

  • url ตัวแรกก็จะคือ url ของข้อมูลที่เราจะติดต่อ
  • data คือข้อมูลที่เราจะส่งไป
  • success คือข้อมูลที่ได้รับกลับมา จะเข้า function ซึ่งมี parameter อยู่ 3 ตัวคือ แต่เราสนใจแค่ 1 ตัวก็พอคือ data
  • dataType ชนิดของข้อมูล คือ html, script, xml หรือ json หากเป็น html หรือ taxt ธรรมดาก็ไม่ต้องระบุบ

ดูตัวอย่างกันเขียนกัน

<html>
	<head>
		<title> Test Ajax </title>
		<!-- นำเข้าข้อมูล jquery java library -->
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
		<script type="text/javascript">
		function submitData(){
			// ส่ง โดย function โพส ของ jquery
			// $ คือ jQuery
			$.post("jsondatatest.html", { name: $("#name").val(), pass: $("#passwd").val()},
				function(data) {
					process(data);
				},
				"json" // กำหนดให้มันเป็น json เพื่อที่ jquery จะแปลงข้อมูล json ให้เป็น object มาให้เลย
			);
		}
		function process(data){
			// เช็คข้อมูลสักหน่อย
			if(data){
				// อ่านตาม object ที่ได้รับจาก json
				$("#fullname").html(data.firstName+" "+data.lastName);
				$("#address").html(data.address.streetAddress+" "+data.address.city+" "+data.address.postalCode);
				$("#tel").html(data.phoneNumbers[0]);
				$("#divResult").show(); // สั่งโชว์ div divResult
			}
		}
		</script>
	</head>

	<body>
		Name : <input type="text" id="name" /><br />
		Passwd : <input type="password" id="passwd" /><br />
		<input type="button" name="bt" value=" Get Data " onclick="submitData()" />
		<div id="divResult" style="display:none">
			<hr />
			Name : <span id="fullname"></span><br />
			Address : <span id="address"></span><br />
			Phone : <span id="tel"></span>
		</div>
	</body>
</html>

ส่วนข้อมูล file jsondatatest.html

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

ต่อไปคือการเขียนโดนใช้ function jQuery.get() ตัวนี้แตกต่างจาก jQuery.post() ตรงที่ไม่มี parameter data เพราะว่า get จะส่งข้อมูลไปทาง url นั่นเอง

jQuery.get(url[,data][,success(data,textStatus,jqXHR)][,dataType]);

ดูตัวอย่างกัน

<html>
	<head>
		<title> Test Ajax </title>
		<!-- นำเข้าข้อมูล jquery java library -->
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
		<script type="text/javascript">
		function submitData(){
			// ส่ง โดย function โพส ของ jquery
			// $ คือ jQuery
			$.get("jsondatatest.html?name="+$("#name").val()+"&pass="+$("#passwd").val(),
				function(data) {
					process(data);
				},
				"json" // กำหนดให้มันเป็น json เพื่อที่ jquery จะแปลงข้อมูล json ให้เป็น object มาให้เลย
			);
		}
		function process(data){
			// เช็คข้อมูลสักหน่อย
			if(data){
				// อ่านตาม object ที่ได้รับจาก json
				$("#fullname").html(data.firstName+" "+data.lastName);
				$("#address").html(data.address.streetAddress+" "+data.address.city+" "+data.address.postalCode);
				$("#tel").html(data.phoneNumbers[0]);
				$("#divResult").show(); // สั่งโชว์ div divResult
			}
		}
		</script>
	</head>

	<body>
		Name : <input type="text" id="name" /><br />
		Passwd : <input type="password" id="passwd" /><br />
		<input type="button" name="bt" value=" Get Data " onclick="submitData()" />
		<div id="divResult" style="display:none">
			<hr />
			Name : <span id="fullname"></span><br />
			Address : <span id="address"></span><br />
			Phone : <span id="tel"></span>
		</div>
	</body>
</html>

เห็นไหมว่า ลักษณะการเขียน post และ get จะไม่แตกต่างกัน ซึ่งผมก็แนะนำให้ใช้ post เพราะว่าต่อไป เราอาจจะต้องทำกับข้อมูลที่ส่งมีขนาดหลายตัวอักษร ซึ่ง get มันจะจำกัดปริมาณข้อมูลความยาวของ url เอาไว้

มีข้อเสนอแนะติชมได้นะครับ

Related Posts

 

2 Responses to Ajax ง่ายๆ กับ jQuery

  1. May Hong says:

    ดีใจจัง มีความรู้ดี ๆ มาให้อ่านอีกแล้ว เย้ๆๆ (ยังไม่เคยใช้ jQuery เลยนะเนี้ย -_-”)

    ReplyReply
  2. iAmbAsE says:

    ขอบคุณครับ

    ReplyReply

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>