คลังเก็บบล็อก

Javascript Debugging


Code สั้นๆ ไว้แสดง message เวลา javascript มี error หรือจะดัดแปลงให้ส่ง error กลับไปที่ server ผ่าน ajax ก็ได้ครับ

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>javascript onerror</title>
</head>

<body>
<script>
window.onerror = function (msg, url, line) {
	str = "Message :\t\t"+msg+"\nUrl :\t\t\t"+url+"\nLine number :\t"+line;
	alert(str);
}

/* ตัวอย่างไปเรียก function ที่ไม่มีจริง */
noBody();
</script>
</body>
</html>

เรื่องที่เกี่ยวข้อง

jQuery Ajax Debugging


ข้อเสียอย่างหนึ่งเวลาใช้ Ajax คือ เวลามี error อะไร user จะไม่ทราบอะไรเลย เพราะว่าเป็นการโหลดแบบเบื้องหลัง บางทีโหลดเกือบจะเสร็จแล้ว แต่เห็นหน้านิ่งๆ เลย refresh ใหม่ซะเลย ความจริง jQuery มี event onErrors ไว้สำหรับจัดการเวลาใช้ Ajax แล้วมีปัญหาอยู่แล้ว แต่การที่จะต้องมาเขียนกำหนดให้ทุกตัวที่เรียกใช้ Ajax ก็ไม่สดวกเลย จึงมี $.ajaxSetup ไว้ให้สามารถกำหนดคุณสมบัติที่เป็นส่วนกลางให้คำสั่ง Ajax ต่างๆ ทั้ง $.Ajax, $.get, $.json, $.post ใช้ร่วมกัน แค่ประกาศใช้ $.ajaxSetup เอาไว้ล่วงหน้า

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery.ajaxSetup</title>
</head>

<body>
<script src="assets/jQuery/jquery.min.js"></script> 
<script>
$.ajaxSetup({
	"cache": false,
	"error": function(jqXHR, exception)
	{
		if(jqXHR.status === 0)
		{
			alert('Not connect.\n Verify Network.');
		}
		else if(jqXHR.status == 404)
		{
			alert('Requested page not found. [404]');
		}
		else if(jqXHR.status == 500)
		{
			alert('Internal Server Error [500].');
		}
		else if(exception === 'parsererror')
		{
			alert('Requested JSON parse failed.');
		}
		else if(exception === 'timeout')
		{
			alert('Time out error.');
		}
		else if(exception === 'abort')
		{
			alert('Ajax request aborted.');
		}
		else
		{
			alert('Uncaught Error.\n' + jqXHR.responseText);
		}
	},
	"scriptCharset": "utf-8",
	"timeout": 60000
});

$.post('nofile.php', function(data){
	alert(data);
});
</script>
</body>
</html>

เรื่องที่เกี่ยวข้อง

%d bloggers like this: