将 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_CODE
或 APEX_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 之后执行:
我在 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_CODE
或 APEX_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 之后执行: