โค้ดและตัวอย่างต่อไปนี้ เป็นการทบทวนการทำงานของ global ajax event
ใน jquery ซึ่งเราสามารถนำไปประยุกต์ใช้งานเพิ่มเติมได้
โดยใน jquery ตั้งแต่เวอร์ชั่น 1.8 ขึ้นไป เราควร ใช้งาน global ajax event
ผูกกับส่วนของ document
ดูเนื้อหาเดิมของ global ajax event
รู้จักกับ Ajax Events ใน jQuery
https://www.ninenik.com/content.php?arti_id=230 via @ninenik
ในตัวอย่างต่อไปนี้ เราจะสมมติกรณ๊ 2 กรณีคือ ทำงานสำเร็จ และทำงานล้มเหลว
ตัวอย่าง
...
โค้ดตัวอย่างทั้งหมด ไฟล์ ajax_global_event.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Global Evant</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<style type="text/css">
/* // css ส่วนการกำหนดให้ icon หมุน*/
.container{background-color:#F7F7F7;}
.glyphicon-refresh{
-animation: spin .7s infinite linear;
-webkit-animation: spin2 .7s infinite linear;
}
@-webkit-keyframes spin2 {
from { -webkit-transform: rotate(0deg);}
to { -webkit-transform: rotate(360deg);}
}
@keyframes spin {
from { transform: scale(1) rotate(0deg);}
to { transform: scale(1) rotate(360deg);}
}
/* // css ส่วนการกำหนดให้ icon หมุน*/
</style>
</head>
<body>
<br><br>
<div class="container">
<br>
<form class="form-inline">
<div class="form-group">
<label for="input_textdata">Name</label>
<input type="text" class="form-control" id="input_textdata"
placeholder="Your name" style="width:250px;">
</div>
<button type="button" id="do_ajax" class="btn btn-primary">Do Ajax</button>
<button type="button" id="do_ajax2" class="btn btn-danger">Do Ajax 2</button>
</form>
<br>
<div class="alert alert-info result" role="alert">...</div>
<div class="log"></div>
<br>
</div>
<script type="text/javascript">
$(function(){
// กรณีทำงานสำเร็จ เรียบร้อย
$("#do_ajax").on("click",function(){
// ส่งข้อมูลแบบ post
$.post("ajax_test.php",{
data1:$("#input_textdata").val() // ข้อมูลที่ส่งไป
},function(data){ // กรณีทำงานสำเร็จ
$(".result").html(data);
});
});
// กรณีทำงานล้มแหลว ทดสอบโดยใส่ชื่อไฟล์ที่ไม่มีอยู่จริง
$("#do_ajax2").on("click",function(){
$.post("ajax_test1.php",{
data1:$("#input_textdata").val()
},function(data){
$(".result").html(data);
});
});
// เมื่อ ajax เริ่มทำงาน
$(document).ajaxStart(function(){
$(".result").html('<span class="glyphicon glyphicon-refresh" aria-hidden="true"></span> Loading...');
$(".log").append("1 Triggered ajaxStart handler.<br>");
});
// เมื่อ ajax ส่งข้อมูล
$(document).ajaxSend(function(){
$(".result").removeClass("alert-info")
.addClass("alert-warning");
$(".log").append("2 Triggered ajaxSend handler.<br>");
});
// เมื่อ ajax เกิดข้อมผิดพลาดหรือล้มเหลว
$(document).ajaxError(function(){
$(".result").removeClass("alert-info")
.removeClass("alert-warning")
.addClass("alert-danger");
setTimeout(function(){
$(".result").removeClass("alert-danger")
.addClass("alert-info")
.html("");
},3000);
$(".log").append("3 Triggered ajaxError handler.<br>");
});
// เมื่อ ajax ส่งข้อมูลสำเร็จ เรียบร้อย
$(document).ajaxSuccess(function(){
$(".result").removeClass("alert-info")
.removeClass("alert-warning")
.addClass("alert-success");
setTimeout(function(){
$(".result").removeClass("alert-success")
.addClass("alert-info");
},3000);
$(".log").append("4 Triggered ajaxSuccess handler.<br>");
});
// เมื่อ ajax ทำงานเสร็จทั้งกรณีที่ล้มแหลว หรือ สำเร็จ
$(document).ajaxComplete(function(){
$(".result").removeClass("alert-info")
.removeClass("alert-warning")
.addClass("alert-success");
setTimeout(function(){
$(".result").removeClass("alert-success")
.addClass("alert-info");
},3000);
$(".log").append("5 Triggered ajaxComplete handler.<br>");
});
// เมื่อ ajax สิ้นสุดการทำงาน
$(document).ajaxStop(function(){
$(".log").append("6 Triggered ajaxStop handler.<br><hr>");
});
});
</script>
</body>
</html>
โค้ดไฟล์ ajax_test.php
<?php
header("Content-type:text/html; charset=UTF-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
if(isset($_POST['data1']) && $_POST['data1']!=""){
echo $_POST['data1']." at ".date("Y-m-d H:i:s");
}else{
echo "test at ".date("Y-m-d H:i:s");
}
sleep(2); // หน่วงเวลา 2 วินาที
?>