Web报表工具FineReport的JS API开发(一)

简介:

很多报表软件可以利用JS接口来实现更多更复杂的功能。以FineReport为例,开放了大量的JS API给用户,根据执行JS的主体不同可以将分为三大类:FRFScontentWindow

js语句中执行可以使用FR的方法或者属性,比如说FR.Msg.alertFR中的方法比如引入finereport.jsFS的方法可以用于数据决策系统中的js接口,比如说FS.tabPane.addItem。而contentWindow是在web页面集成的时候,将F报表嵌入在iframe中,调用报表对象时使用的接口,比如说:document.getElementById('reportFrame').contentWindow,其中document.getElementById('reportFrame')是获取iframe对象,contentWindow是报表对象,相当于html中的window对象。

由于篇幅,这里先介绍FR

FR

 

大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个htmlhead头部中会引入FRjs,如下:

1
<script type= "text/javascript"  src= "/WebReport/ReportServer?op=emb&resource=finereport.js" ></script>

 

这个finereport.js中包含了许多内置的function以及一些公有的属性,不管在模板中还是其他网页中,只要引入了finereport.js,就能够通过FR.xxx的形式调用公有的属性与方法

 

比如,在模板中使用,访问模板时会自动引入finereport.js,因此在模板的js脚本中可以直接使用FR.xxx来调用方法,如下图:


或者需要在自己的网页如某个jsp页面中调用FR的方法,要先引入finereport.js,再通过FR.xxx来调用,如下:

1
2
3
4
5
6
7
8
9
10
11
<html>
  <head>
   <script type= "text/javascript"  src= "/WebReport/ReportServer?op=emb&resource=finereport.js" ></script>
   <script type= "text/javascript" >
     var  url = FR.cjkEncode( "/WebReport/ReportServer?reportlet=Gettingstarted.cpt&地区=华东" );
     window.open(url);
   </script>
  </head>
  <body> 
  </body>
</html>

这里主要细讲一下MsgAjax方法。

1  FR.Msg

FR内置了统一风格的消息框,替代实现了window中的alertconfirm以及prompt

1.1  FR.Msg.alert方法

使用方法

FR.Msg.alert(title, message, callback),弹出警告框。

title:对话框标题;message:对话框里显示的提示详细;callback:点击确定时调用的方法。

注意,callback是一个function方法,所以在写callback的时候必须为一个方法。

 

如在某个控件增加编辑结束事件,JS为:FR.Msg.alert("警告","值错误");,在该控件编辑结束后,会看到如下图所示的对话框:



1.2  FR.Msg.confirm方法

使用方法

FR.Msg.confirm(title, message, callback, min_width),弹出带有确认和取消按钮的对话框。

title:对话框标题;message:对话框里显示的提示详细;cellback:点击确定时调用的方法;min_width:表示最小宽度。

 

如在某个删除按钮中增加点击事件,JS为:FR.Msg.confirm("警告","确认要删除吗?");,点击删除行时会看到,会看到如下图所示的对话框:



注意,此方法无法获取点击“确定”或“取消”的返回值,此方法主要是触发回调函数的。若希望通过返回值的不同来进行下面的操作,则可使用window中的confirm

1.3  FR.Msg.prompt方法

使用方法

FR.Msg.prompt(title, message, value, callback, min_width),可以传递参数的对话框

title:对话框标题;message:对话框里显示的提示详细;callback:点击确定时调用的方法;Value:参数传递的默认值;min_width:表示最小宽度。

 

如在某个控件增加点击事件,JS为:FR.Msg.prompt("输入","爱好","运动");,在该控件被点击时,会看到如下图所示的对话框:



1.4  FR.Msg.toast方法

使用方法

FR.Msg.toast(message),报表从页面右上角弹出来的那个长条形信息。

message:弹出的信息

 

如给某个模板增加填报成功事件,JS为:FR.Msg.toast("填报成功");,在点击提交按钮,提交成功后会看到页面的右上角弹出如下对话框:



2  FR.ajax

大家知道JS是前端代码,直接由浏览器来执行,不会与服务器进行交互。

通过AJAX,用户就可以使用JavaScriptXMLHttpRequest对象来直接与服务器进行通信。且在不重载页面的情况下与Web服务器交换数据,也就是所谓的异步请求。

2.1 调用语法

 

如下ajax示例:

1
2
3
4
5
6
7
8
FR.ajax({
    url:  "some.jsp" ,
    type:  "GET" ,
    data:  "p1=a&p2=b" ,
    success:  function (msg){
      alert(  "Data Saved: "  + msg );
    }
});

2.2  ajax中的选项说明

上例中的urltypedata等都是ajax请求设置时的选项,这些选项都是可选的,以下列出常用选项并说明。

asyncBoolean

默认为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false

注:同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

completeFunction

 

请求完成后回调函数(请求成功或失败之后均调用)。如下:

1
2
3
4
5
6
FR.ajax({
    url:  "some.jsp" ,
    complete:  function (XMLHttpRequest, textStatus){
      alert( this .url);
    }
});

其中参数为XMLHttpRequest 对象和一个描述成功请求是否成功的字符串(成功textStatus=success,否则为error)

function中可以通过this.xxx来调用该ajax请求中的选项值。

dataObject/String

发送到服务器的数据。GET请求中将自动转换为请求字符串格式,附加在url后。

值必须是Key/Value格式,可以是字符串如"p1=pavalue&p2=p2value",或者是对象如{p1:p1value,p2:p2value}

dataTypeString

预期服务器返回的数据类型。如果不指定,将自动根据HTTPMIME信息来智能判断。可用值有:

"xml":返回 XML 文档

"html":返回纯文本HTML信息;包含的script标签会在插入dom时执行。

"script":返回纯文本JavaScript代码。

"json":返回JSON数据。

"text"返回纯文本字符串。

errorFunction

 

请求失败时调用此函数。如下:

1
2
3
4
5
6
FR.ajax({
    url:  "some.jsp" ,
    error:  function (XMLHttpRequest, textStatus, errorThrown){
      alert( this .url);
    }
});

 其中参数为XMLHttpRequest 对象、错误信息、捕获的异常对象。

 

通常textStatuserrorThrown之中只有一个会包含信息。

 

successFunction

 

请求成功后的回调函数,如下:

1
2
3
4
5
6
FR.ajax({
    url:  "/WebReport/a.html" ,
    success:  function (data, textStatus){
      alert( this .url);
    }
});


其中data为服务器返回的,并根据dataType参数进行处理后的数据。textStatus为状态值sucess

 

timeoutNumber

 

设置请求超时时间(毫秒)。此设置将覆盖全局设置。

 

ypeString

 

请求方式POSTGET,默认为GET

 

urlString

 

发送请求的地址。

 

 

关于FScontentWindow,会在下一节介绍。



本文转自 雄霸天下啦 51CTO博客,原文链接:http://blog.51cto.com/10549520/1752123,如需转载请自行联系原作者
相关文章
|
26天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
130 45
|
7天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
21 2
|
21天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
37 1
|
24天前
|
XML 安全 PHP
PHP与SOAP Web服务开发:基础与进阶教程
本文介绍了PHP与SOAP Web服务的基础和进阶知识,涵盖SOAP的基本概念、PHP中的SoapServer和SoapClient类的使用方法,以及服务端和客户端的开发示例。此外,还探讨了安全性、性能优化等高级主题,帮助开发者掌握更高效的Web服务开发技巧。
|
27天前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
37 2
|
28天前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
30 2
|
2月前
|
监控 负载均衡 API
Web、RESTful API 在微服务中有哪些作用?
在微服务架构中,Web 和 RESTful API 扮演着至关重要的角色。它们帮助实现服务之间的通信、数据交换和系统的可扩展性。
48 2
WK
|
27天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
47 0
|
28天前
|
JavaScript 前端开发 Java
SpringBoot_web开发-webjars&静态资源映射规则
https://www.91chuli.com/ 举例:jquery前端框架
17 0
|
2月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
113 3