Oracle apex apex_应用程序全局变量的范围
apex全局变量的范围是什么?它们是真正的“全局”、会话范围还是请求范围 我做了一些测试,我的发现似乎是这些全局变量属于请求范围(即:同一会话中的其他请求和不同会话中的其他请求都有自己的全局变量副本),但我想确认我的发现是正确的 我们设置的详细信息: 客户端JS代码如下所示:Oracle apex apex_应用程序全局变量的范围,oracle-apex,Oracle Apex,apex全局变量的范围是什么?它们是真正的“全局”、会话范围还是请求范围 我做了一些测试,我的发现似乎是这些全局变量属于请求范围(即:同一会话中的其他请求和不同会话中的其他请求都有自己的全局变量副本),但我想确认我的发现是正确的 我们设置的详细信息: 客户端JS代码如下所示: data = {'first_name':$('#P25_FIRST_NAME').val()}; data = JSON.stringify(data); $.ajax({ type: "POST", ur
data = {'first_name':$('#P25_FIRST_NAME').val()};
data = JSON.stringify(data);
$.ajax({
type: "POST",
url: "wwv_flow.show",
data: {
p_flow_id:$('#pFlowId').val(),
p_flow_step_id:$('#pFlowStepId').val(),
p_instance:$('#pInstance').val(),
x01:data,
p_request:"APPLICATION_PROCESS=AJAX_TEST"
},
dataType: "json",
success: function(data) {
alert('success:\n' + data);
},
error: function(data) {
alert('error:\n' + data);
},
});
CREATE OR REPLACE PROCEDURE
AJAX_TEST IS
JSON_REQUEST JSON;
JSON_RESPONSE JSON;
BEGIN
JSON_REQUEST := JSON(APEX_APPLICATION.G_X01);
JSON_RESPONSE := JSON();
JSON_RESPONSE.PUT('first_name', JSON_REQUEST.GET('first_name').GET_STRING());
JSON_RESPONSE.PUT('last_name', 'smith');
HTP.P(JSON_RESPONSE.to_char());
END AJAX_TEST;
服务器端PL/SQL代码如下所示:
data = {'first_name':$('#P25_FIRST_NAME').val()};
data = JSON.stringify(data);
$.ajax({
type: "POST",
url: "wwv_flow.show",
data: {
p_flow_id:$('#pFlowId').val(),
p_flow_step_id:$('#pFlowStepId').val(),
p_instance:$('#pInstance').val(),
x01:data,
p_request:"APPLICATION_PROCESS=AJAX_TEST"
},
dataType: "json",
success: function(data) {
alert('success:\n' + data);
},
error: function(data) {
alert('error:\n' + data);
},
});
CREATE OR REPLACE PROCEDURE
AJAX_TEST IS
JSON_REQUEST JSON;
JSON_RESPONSE JSON;
BEGIN
JSON_REQUEST := JSON(APEX_APPLICATION.G_X01);
JSON_RESPONSE := JSON();
JSON_RESPONSE.PUT('first_name', JSON_REQUEST.GET('first_name').GET_STRING());
JSON_RESPONSE.PUT('last_name', 'smith');
HTP.P(JSON_RESPONSE.to_char());
END AJAX_TEST;
我希望确保变量APEX\u APPLICATION.G\u X01
,X02
等不会受到处理当前请求范围内的其他请求的影响
多谢 每个请求(或页面提交)。
快速测试可以确认这一点:随需应变流程:“伪造” 然后从控制台运行:
var ajaxRequest = new htmldb_Get(null, $v("pFlowId"), "APPLICATION_PROCESS=bogus", $v("pFlowStepId"));
ajaxRequest.addParam("x01","xxxx");
var ajaxReturn = ajaxRequest.get();
答复:
X01: xxxx
X01:
然后运行:
var ajaxRequest = new htmldb_Get(null, $v("pFlowId"), "APPLICATION_PROCESS=bogus", $v("pFlowStepId"));
var ajaxReturn = ajaxRequest.get();
答复:
X01: xxxx
X01:
当然,在页面提交期间,f##数组和x##项将保留提交的值,直到处理结束。另外,另一个用户(会话)不会影响这些值。您可能会说,在每次提交/请求后,这些项目的缓存都会被清除。谢谢,这肯定会证实这一点。