Javascript 使用Java脚本将anychart添加到Apex 5

Javascript 使用Java脚本将anychart添加到Apex 5,javascript,oracle-apex-5,anychart,Javascript,Oracle Apex 5,Anychart,我想在我的Apex应用程序上有一个100%可定制的图表。为此,我想添加一个带有Java脚本的Anychart,并使用自定义xml 我将OracleAnyChart.swf和preload.swf文件添加到共享组件->静态应用程序文件中 我在“页面加载时执行”下有此代码 我的随需应变流程“GET_BEXML”使用正确的XML设置项目BE_数据,但图表不会呈现 我试着打电话 var chart = getChartById('be_chart'); chart.setData($v('BE_DAT

我想在我的Apex应用程序上有一个100%可定制的图表。为此,我想添加一个带有Java脚本的Anychart,并使用自定义xml

我将OracleAnyChart.swf和preload.swf文件添加到共享组件->静态应用程序文件中

我在“页面加载时执行”下有此代码

我的随需应变流程“GET_BEXML”使用正确的XML设置项目BE_数据,但图表不会呈现

我试着打电话

var chart = getChartById('be_chart');
chart.setData($v('BE_DATA'));
chart.refresh();
从一个动态操作中,我似乎无法调用动态操作范围中的任何anychart函数,它说“getCharById it not defined”


我遗漏了什么吗?

您正在调用一个不存在的方法。 您需要像这样引用AnyChart对象(并且可能更改变量名,以便不覆盖原始图表对象):

实际上…
我已回复您getChartById呼叫失败的原因。
我意识到这不是真正的问题。

您是否尝试过将数据直接传递给done()回调函数?
这种方法有效。它真正伟大的地方在于,您可以返回的数据没有32K限制

-- Apex Application Process "GET_BEXML"
declare
    v_limit constant pls_integer := 32767;
    v_buff  varchar2(32767);
    v_data  clob;
    v_os    pls_integer := 1;
    v_len   pls_integer := 0;
begin
    v_data := get_anydata_xml_doc;  -- a PL/SQL function returning your AnyData xml
    v_len  := dbms_lob.getlength(v_data);
    while v_os < v_len
    loop
        dbms_lob.read(v_data, v_limit, v_os, v_buff);
        htp.prn(v_buff);
        v_os := v_os + v_limit;
    end loop;
end;
当然,您也可以在Apex中动态创建任意数据xml clob

var mychart = AnyChart.getChartById('be_chart');
-- Apex Application Process "GET_BEXML"
declare
    v_limit constant pls_integer := 32767;
    v_buff  varchar2(32767);
    v_data  clob;
    v_os    pls_integer := 1;
    v_len   pls_integer := 0;
begin
    v_data := get_anydata_xml_doc;  -- a PL/SQL function returning your AnyData xml
    v_len  := dbms_lob.getlength(v_data);
    while v_os < v_len
    loop
        dbms_lob.read(v_data, v_limit, v_os, v_buff);
        htp.prn(v_buff);
        v_os := v_os + v_limit;
    end loop;
end;
// "Execute when Page Loads"
    var jqxhr = apex.server.process('GET_BEXML', {}, {dataType:'text'});
    jqxhr.done(function(pData) {
        console.log(pData.substring(1,50));
        chart.setData(pData);
        chart.write('container_be');
    });