วิธีการก็ไม่ยาก แค่เราเรียกใช้ $.ajax(option) แค่นี้เอง ส่วน option นั้นเรากำหนดค่าในรูปแบบของ json ซึ่งมี member อะไรที่กำหนดได้บ้างนั้น ไปดูได้จาก document ของ jQuery ครับ ดังนั้นเราลอง comment โค้ดเดิมที่เรียก proxy ของ Web Service แล้วมาเขียนคำสั่งของ jQuery ดู
function txtEmpName_OnKeyUp(e) {
if (e.keyCode != 13 || e.keyCode != 9) {
$("#txtEmpId").val("");
var empName = $("#txtEmpName").val();
if (empName.length > 2) {
//BAS.Web.Services.wsFiling.GetStaffsByKeyword(empName, GetStaffSuccess);
$.ajax({
type: "POST",
url: "../wsFiling.asmx/GetStaffsByKeyword",
data: "{keyWord:'" + empName + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) { GetStaffSuccess(data.d, "", "") }
});
} else {
$("#divStaff").hide();
}
}
}
ก็ไม่ยากอย่างที่คิดครับ ตรง success เราก็ไปเรียก GetStaffSuccess function ตัวเดิมนั่นแหละ ส่วน error ผมไม่ได้ใส่ไว้เหมือนเดิม และในการใช้งานจริงก็ควรสร้าง OnError function ไว้ด้วยครับ
แต่โดยส่วนตัวขอใช้ผ่าน ScriptManager เหมือนเดิมครับ
Reference:
Using jQuery with ASP.NET Web Services and JSON, www.prettycode.org
Using jQuery to Consume ASP.NET JSON Web Services, www.encosia.com
๒ ความคิดเห็น:
อ่า งานจริง ผมเจอเรื่อง Asyn ด้วยครับ ไม่แน่ใจว่าของ .net มันมีหรือเปล่า เหมือนมัน Process ไม่ทันกันหน่ะครับ ใช้ JQuery แก้ปัญหาส่วนนี้ได้เลย ....
ถ้าใช้ของ MSAjax ก็สามารถใช้ WebRequestManager แทน UpdatePanel หรือ PageRequestManager ครับ การทำงานก็จะคล้ายกับเราใช้ jQuery ครับ (ในกรณีที่จำเป็นนะครับ)
แสดงความคิดเห็น