الهدف من المشروع هو بناء نظام يحفظ بيانات الحقول تلقائياً أثناء كتابة المستخدم، مع استخدام الـ Debounce لضمان خفة الطلبات وإعطاء إشارة بصرية لحالة الحفظ[cite: 1481, 1483].
1. كود الـ AJAX Callback في السيرفر (SAVE_DATA_PROCESS)[cite: 1487]:
BEGIN
UPDATE my_notes
SET note_content = :P10_NOTE_TEXT, last_updated = SYSDATE
WHERE note_id = :P10_NOTE_ID; [cite: 1492, 1493, 1494]
apex_json.open_object; [cite: 1497]
apex_json.write('status', 'success'); [cite: 1498]
apex_json.close_object; [cite: 1500]
END;
2. كود الجافاسكربت الذكي في العميل:
function performSave() { [cite: 1511]
apex.util.showSpinner($("#P10_STATUS_ICON")); [cite: 1513]
apex.server.process("SAVE_DATA_PROCESS", { [cite: 1515]
pageItems: ["P10_NOTE_ID", "P10_NOTE_TEXT"] [cite: 1516]
}, { [cite: 1517]
success: function(pData) { [cite: 1518]
$("#save_status_text").text("تم الحفظ تلقائياً"); [cite: 1520]
$(".u-Processing").remove(); [cite: 1522]
} [cite: 1524]
}); [cite: 1528]
}
// الانتظام والانتظار لمدة ثانيتين بعد آخر حرف يكتبه المستخدم قبل انطلاق الحفظ
var autoSave = apex.util.debounce(performSave, 2000); [cite: 1530, 1531]