Ajax + apex 4.2 = apex.server.process api
它需要您在頁面或應用程序進程的按需處理點處有一個進程。在這裏你必須調用你的函數並提供參數,這些參數可以是頁面項目。要提供返回,請在調用htp.p
時將值寫入http緩衝區。
DECLARE
some_var1 VARCHAR2(50);
BEGIN
some_var1 := my_package.my_function(:P1_EMPNO, :P1_DEPTNO);
-- write values back
htp.p(some_var1);
END;
您可以輕鬆地爲apex.server.process
提供頁面項目。進一步處理全部用javascript。
警告的提示:dataType默認設置爲JSON,因此如果您不提供其他默認數據類型並且不返回json字符串,則會得到解析錯誤。因此,如果您在按需過程(如INVALID)內返回文本,請確保將數據類型設置爲文本!
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');
};
}
});
我不會在比所需的更動態的動作中分割它,儘管它可能是可能的。我個人不喜歡試圖使用PLSQL塊動態真實行爲,僅僅是因爲如果你想處理返回值更加模糊行事。
只需設置您的按鈕不提交頁面,但動作定義的動作。然後在動態行爲中創建一個類型爲execute javascript的真正行爲,並在那裏使用帶有回調的ajax調用。
來源
2014-01-31 09:24:54
Tom
嗨湯姆,再次感謝您的回覆,但只是有幾個查詢,因爲我從來沒有實際使用過apex.server.process:Q1)我假設你的點播頁面進程的名稱叫做「MY_PROCESS」。 Q2)根據上面的示例,pageItems排序是否必須與my_package.my_function(:P1_EMPNO,:P1_DEPTNO)中的參數的順序相匹配,這似乎不是這種情況? Q3)對不起,我沒有完全理解你的真實行動要點 - 你上面的最後一句話。請您詳細說明這一點,我是否也需要進行FALSE操作?謝謝湯姆。 – tonyf
1)是的,這是正確的,名字必須匹配! 2)訂單根本不重要。只需在會話狀態中設置這些項目的值,以便它們在您的過程中可用3)通過按下按鈕來進行ajax調用,我假設使用動態操作對該按鈕的點擊作出反應最容易的。動態動作然後會有一個類型爲「execute javascript」的真正動作,並且在那個動作中你將執行ajax調用。 – Tom
嘿湯姆,真的不知道發生了什麼,但它看起來像我的點播頁面進程正在從apex.server.process調用,因爲我有一個插入語句提交給我的結果。但事實是,實際的apex.server。過程成功部分沒有返回任何警報 - 具體來說,警報(pData)甚至沒有顯示任何內容或沒有觸發。我不認爲htp.p正在工作。無論如何,在Chrome檢查員看到實際結果?不知道我是否錯過了任何。謝謝。 – tonyf