Ajax + apex 4.2 =apex.server. proses api
Ini mengharuskan Anda memiliki proses pada titik proses sesuai permintaan halaman atau proses aplikasi. Di dalamnya Anda harus memanggil fungsi Anda dan memberikan parameter, yang dapat berupa item halaman. Untuk memberikan pengembalian, tulis nilai ke buffer http dengan panggilan ke 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;
Anda dapat dengan mudah memberikan apex.server.process
dengan item halaman. Penanganan lebih lanjut semuanya dalam javascript.
Catatan peringatan:tipe data secara default disetel ke JSON, dan dengan demikian jika Anda tidak memberikan tipe data default lain dan tidak mengembalikan string json, Anda akan mendapatkan kesalahan penguraian. Jadi, jika Anda mengembalikan teks dalam proses sesuai permintaan seperti INVALID, pastikan untuk menyetel tipe data ke teks!
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');
};
}
} );
Saya tidak akan membagi ini dalam tindakan yang lebih dinamis daripada yang diperlukan, meskipun itu mungkin. Saya pribadi tidak suka mencoba menggunakan tindakan nyata dinamis blok PLSQL, hanya karena lebih tidak jelas untuk ditindaklanjuti jika Anda ingin menangani nilai pengembalian.
Cukup setel tombol Anda untuk tidak mengirimkan halaman, tetapi tindakan ditentukan oleh tindakan dinamis. Kemudian dalam aksi dinamis, buat satu aksi sebenarnya dari tipe, jalankan javascript, dan gunakan panggilan ajax dengan panggilan balik di sana.