如何解决Oracle 18c APEX中apex.ajax.clob不是构造函数的错误?
解决APEX新版主题中“apex.ajax.clob is not a constructor”错误
问题根源
在Oracle APEX 5.0及后续版本中,旧版的apex.ajax.clob API已经被官方废弃,取而代之的是更灵活通用的apex.server.process方法来处理AJAX请求——这就是你切换主题后触发报错的直接原因。
修复后的完整代码
把原来的refreshMap函数替换为以下版本,核心是用新版AJAX API替代旧的apex.ajax.clob实现:
function refreshMap() { // 调用新版APEX AJAX方法 apex.server.process( // 替换为你实际使用的AJAX进程名称(比如页面进程的名称) "YOUR_AJAX_PROCESS_NAME", {}, // 如果需要传递参数,在这里添加,示例:{ p1_task_date: apex.item("P1_TASK_DATE").getValue() } { success: function(gData) { // 保留你原来的业务逻辑 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; } 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> </td></tr><tr><td><b>Task # : </b> </td><td>'+link+'</td></tr><tr><td align="left"><b>Subject : </b> </td><td>'+colArray[4]+'</td></tr><tr><td align="left"><b>Status : </b> </td><td>'+repStatus+'</td></tr></table>'; var newmarker = new google.maps.Marker({ position: new google.maps.LatLng(colArray[0], colArray[1]), map: map, 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); }, error: function(xhr, status, error) { // 添加错误提示,提升用户体验 alert("An error occurred while loading map data: " + error); }, dataType: "text" // 确保以纯文本格式接收后端返回的CLOB数据,匹配原有逻辑 } ); }
关键修改说明
- API替换:用
apex.server.process完全替代旧的apex.ajax.clob构造函数,这是APEX新版官方推荐的AJAX调用方式 - 数据格式指定:通过
dataType: "text"保证后端返回的CLOB数据以纯文本形式接收,和你原来的处理逻辑完全兼容 - 回调优化:拆分出
success和error回调,既保留原有业务逻辑,又新增了错误处理分支 - 进程名称替换:务必将
YOUR_AJAX_PROCESS_NAME替换为你实际使用的后端AJAX进程名称(和旧版代码绑定的进程一致即可)
内容的提问来源于stack exchange,提问作者Kinjan Bhavsar
相关产品推荐
相关产品推荐

