Ajax + apex 4.2 = apex.server. quy trình api
Nó yêu cầu bạn có một quy trình tại điểm quy trình theo yêu cầu của trang hoặc quy trình đăng ký. Trong đó, bạn phải gọi hàm của mình và cung cấp các tham số, có thể là các mục của trang. Để cung cấp giá trị trả về, hãy ghi các giá trị vào bộ đệm http với các lệnh gọi tới htp.p
.
DECLARE
some_var1 VARCHAR2(50);
BEGIN
some_var1 := my_package.my_function(:P1_EMPNO, :P1_DEPTNO);
-- write values back
htp.p(some_var1);
END;
Bạn có thể dễ dàng cung cấp apex.server.process
với các mục trang. Việc xử lý thêm tất cả đều bằng javascript.
Lưu ý cảnh báo:dataType theo mặc định được đặt thành JSON, do đó nếu bạn không cung cấp kiểu dữ liệu mặc định nào khác và không trả về chuỗi json, bạn sẽ gặp lỗi phân tích cú pháp. Vì vậy, nếu bạn trả lại một văn bản trong quy trình theo yêu cầu của mình, chẳng hạn như INVALID, hãy đảm bảo đặt kiểu dữ liệu thành văn bản!
apex.server.process ( "MY_PROCESS", {
pageItems: "#P1_DEPTNO,#P1_EMPNO"
}, {
dataType: "text"
, success: function( pData ) {
//pData should contain VALID or INVALID - alert it
alert(pData);
if ( pData === 'INVALID' ) {
// do something here when the result is invalid
// maybe you want to color something red for example
alert('The data you have entered is invalid');
};
}
} );
Tôi sẽ không chia nhỏ điều này thành nhiều hành động năng động hơn mức cần thiết, mặc dù nó có thể là có thể. Cá nhân tôi không thích cố gắng sử dụng một hành động true động của khối PLSQL, chỉ vì hành động này sẽ khó thực hiện hơn nếu bạn muốn xử lý các giá trị trả về.
Chỉ cần đặt nút của bạn để không gửi trang mà là hành động được xác định bởi hành động động. Sau đó, trong hành động động, hãy tạo một hành động thực sự của loại thực thi javascript và sử dụng lệnh gọi ajax với (các) lệnh gọi lại ở đó.