将 PL-SQL 变量值传递给 PL-SQL 过程中的 JavaScript 函数

Pass PL-SQL variable value to JavaScript function on PL-SQL Procedure

我在 Oracle Apex 20.2 和 Oracle DB 18c 上有一个应用程序。 我有一个 pl-sql 程序来呈现问题和一些特定的操作。 现在我想使用 JavaScript 函数增强操作,但我的问题是:

例如我有这个程序plsql代码:

  if cq.type != 'MULTIPLE' then
 htp.p('<select name ="select1" onchange="showme()">' || c_crlf);



 htp.p('<input type=radio name="' || l_name || '" id="' || l_id || '_x" class="rb" ' || l_required ||
                            'value=""><span class="icon rb"></span><label for="' || l_id || '_x" class="hideMeButHearMe">' || encode(cq.other_label) || '</label>');
htp.p('<script>
                       function showme(){
                       var s = document.form1.select1;
                       var h = document.form1.input1;
                       if( s.selectedIndex == '||l_id||'  ) {
                       h.style.visibility="visible";
                       }else{
                       h.style.visibility="hidden";
                       }}
                        </script>');

l_id 变量值适用于 html 代码,我可以使用该值执行操作。 但是当尝试在 JS 函数上使用 l_id 值时,JS 无法读取该值。

任何人都可以帮助在同一过程中将 plsql 变量值传递给 JS 函数的正确方法是什么。

您可以使用 APEX_JAVASCRIPT 包,例如APEX_JAVASCRIPT.ADD_INLINE_CODEAPEX_JAVASCRIPT.ADD_ONLOAD_CODE 程序。

像这样:

APEX_JAVASCRIPT.ADD_INLINE_CODE(APEX_STRING.FORMAT('const x = "%s"', 'x value'))

此包中的一些其他功能也可用于防止 XSS、转义特殊符号等。

https://docs.oracle.com/en/database/oracle/application-express/20.2/aeapi/APEX_JAVASCRIPT.html

所以我自己尝试了这个并且:

declare

    v_test varchar2(200) := 'yes';

begin

    HTP.p ('<script type="text/javascript">');
    HTP.p ('alert("The value of  v_test is ' ||v_test || '")' );
    HTP.p ('</script>');

end;

结果:

如果你想在你的 pl sql 中使用 javascript 你必须确保你的 pl sql 在 Apex 中的 HEADER 之后执行: