【问题标题】:How to solve apex.ajax.clob error in Oracle 18c APEX?如何解决 Oracle 18c APEX 中的 apex.ajax.clob 错误?
【发布时间】:2019-02-27 09:59:55
【问题描述】:

我正在尝试在我的地图控件中显示图钉,我在旧主题 4.2 中使用了以下代码,它运行良好。但是有了新的 APEX 主题,我得到 apex.ajax.clob is not a constructor 错误

function refreshMap() 
{
  var gData;
  var clob_ob = new apex.ajax.clob
  (  
function()
{
  var rs = p.readyState  
  if(rs == 4)
  {
    gData = p.responseText;
    if(gData.length == 0)
    {
      alert("No task found.");
      return;
    }
    if(gData=='-1')
    {
      alert("Data too large to be displayed. Filter task by type or select smaller date range.");
      return;
    }
  }
  if(gData)
  {
    var actArray = gData.split("~#~");
    var bounds = new google.maps.LatLngBounds();
    for(var i=0; i < actArray.length; i++) 
    {
      acct = ""+actArray[i];
      var colArray = acct.split("~@~");
      var repStatus = colArray[5];
      var link = '<b><u><a href="'+colArray[7]+'">'+colArray[2]+'</a></u></b>';
      var html = '<table><tr><td style="font-weight: bold; font-size: 175%;">'+colArray[3]+'</td></tr></table><table><tr><td>&nbsp;</td></tr><tr><td><b>Task # : </b>&nbsp;</td><td>'+link+'</td></tr><tr><td align="left"><b>Subject : </b>&nbsp;</td><td>'+colArray[4]+'</td></tr><tr><td align="left"><b>Status :   </b>&nbsp;</td><td>'+repStatus+'</td></tr></table>';
      var newmarker = new google.maps.Marker({
          position: new google.maps.LatLng(colArray[0], colArray[1]),
          map: map,
          //title: html,
          icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=%E2%80%A2|'+colArray[8]
      });

      newmarker['infowindow'] = new google.maps.InfoWindow({
              content: html
          });

      google.maps.event.addListener(newmarker, 'click', function() {
          this['infowindow'].open(map, this);
      });

      marker.push(newmarker);
                bounds.extend(new google.maps.LatLng(colArray[0], colArray[1]));
    } 
    map.fitBounds(bounds);
  }
});  
clob_ob._get();
}

【问题讨论】:

    标签: oracle oracle-apex oracle-apex-5.1 oracle18c


    【解决方案1】:

    apex.ajax.clob 已弃用并移至 legacy_18.js(至少在 18.2 中)。要遵循该示例,您必须包含/i/libraries/apex/legacy_18.js。这可以在 Javascript -> 文件 URL 框中逐页完成。

    【讨论】:

    • 如果您到处都在使用它,用户界面 -> 用户界面详细信息 -> JavaScript 中有一个选项。您可以在此处选中复选框以包含“Pre 18.1”和“18.x”的已弃用或不支持的 JavaScript 函数。
    【解决方案2】:

    我知道这是一篇很老的帖子,但我在遇到同样的问题并寻找解决方案时发现了它。由于这是在 Google 上为我显示的首批链接之一,在找到解决方案后,我决定在此处分享代码以供将来参考。

    您需要根据您的情况调整此代码,因此请以它为例,了解如何在不依赖旧版 javascript 的情况下解决此问题。

    在此示例中,我有一个包含 HTML 源代码(接受少量参数)的 CLOB,我需要在页面加载时将其显示在区域中。

    首先你创建一个AJAX回调进程(我们称这个进程为HTML

    DECLARE
      l_clob        CLOB;
      l_file        BLOB;
      l_dest_offset PLS_INTEGER := 1;
      l_src_offset  PLS_INTEGER := 1;
      l_lang_ctx    PLS_INTEGER := dbms_lob.default_lang_ctx;
      l_blob_warn   PLS_INTEGER;
    BEGIN
    
      -- Get clob
      l_clob := functionReturningClob(i_code => :P1_CODE, i_type => :P1_TYPE);
    
      -- Create blob
      DBMS_LOB.CREATETEMPORARY(l_file, true);
      DBMS_LOB.CONVERTTOBLOB(l_file, l_clob, dbms_lob.lobmaxsize, l_dest_offset, l_src_offset, dbms_lob.default_csid, l_lang_ctx, l_blob_warn);
    
      -- Download blob
      OWA_UTIL.MIME_HEADER('text/html', false);
      HTP.P('Content-Length: ' || dbms_lob.getlength(l_file));
      HTP.P('Content-Disposition: attachment; filename="content.html"');
      OWA_UTIL.HTTP_HEADER_CLOSE();
      WPG_DOCLOAD.DOWNLOAD_FILE(l_file);
    
    END;
    

    有了这个,我可以在需要时按需调用它。出于我的目的,我的页面上有 - 页面加载时执行 Javascript,其中包含以下代码。

    // Start the process called HTML and add the following page items as parameter
    var p = apex.server.process('HTML', {
      pageItems:['P1_CODE', 'P1_TYPE']
    }, {
      dataType: 'html'
    });
    
    // When the process is done, replace the region HTML with the downloaded HTML source
    // Also - the region on the page has the "region" as its static ID
    p.done(function(data) {
      $('#region').html(data);
    });
    

    这应该为您提供足够的信息来进行自己的调整并使其发挥作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 2020-05-19
      • 2010-12-24
      • 1970-01-01
      • 2023-01-26
      相关资源
      最近更新 更多