报表服务器版本
|
功能变动
|
11.0.7
|
补充 FVS 可视化看板相关接口说明
适用于安装了「
FineVis数据可视化
」插件
V1.8.0
及之后版本的用户
|
11.0
|
-
|
ajax 是一种与服务器交换数据的技术,可以在不重新载入整个页面的情况下更新网页的一部分。
FR.ajax 是封装过的 jQuery.ajax() 函数,在报表中对特定网页进行 ajax 请求, data 参数做了中日韩文编码处理。
options 是 a
jax 参数,如下表说明:
参数
|
类型
|
说明
|
options
|
Object
|
必填,ajax参数
|
[options]以 json 格式提供,属性如下表所示:
属性
|
类型
|
说明
|
url
|
String
|
必填,发送请求的地址
|
data
|
Object
|
选填,发送到服务器的数据。GET 请求中将自动转换为请求字符串格式,附加在 URL 后。
值必须是
Key/Value
格式,可以是字符串如
p1=pavalue&p2=p2value
,或者是对象如
{p1:p1value,p2:p2value}
|
type
|
String
|
选填,请求方式 POST/GET ,默认为 GET
|
dataType
|
String
|
选填,预期服务器返回的数据类型。如果不指定,将自动根据 HTTP 包 MIME 信息来智能判断。可用值有:
注:
移动端不支持 "xml"、"html"、"script"
"xml":返回 XML 文档
"html":返回纯文本 HTML 信息;包含的 script 标签会在插入 dom 时执行。
"script":返回纯文本 JavaScript代码。
"json":返回 JSON 数据。
"text":返回纯文本字符串。
"jsonp" : 跨域采用 jsonp 方式
|
success
|
Function
|
选填,请求成功后的回调函数,格式如:
success: function(data, textStatus){ // data 为服务器返回的,并根据 dataType 参数进行处理后的数据。 //textStatus 为状态值 success }
如下示例:
FR.ajax({ url: "/webapps/webroot/a.html", success: function(data, textStatus) { alert(this.url); } });
|
error
|
Function
|
选填,请求失败时调用此函数,格式如:
error: function(XMLHttpRequest, textStatus, errorThrown){ //参数分别为 XMLHttpRequest 对象、错误信息、捕获的异常对象。 //通常 textStatus 和errorThrown 之中只有一个会包含信息 }
如下示例:
FR.ajax({ url: "some.jsp", error: function(XMLHttpRequest, textStatus, errorThrown) { alert(this.url); } });
|
complete
|
Function
|
选填,请求完成后回调函数(请求成功或失败之后均调用),function 中可以通过 this.xxx 来调用该 ajax 请求中的选项值。
complete: function(XMLHttpRequest, textStatus){ //参数分别为 XMLHttpRequest 对象和一个描述成功请求是否成功的字符串 }
如下示例:
FR.ajax({ url: "some.jsp", complete: function(XMLHttpRequest, textStatus) { alert(this.url); } });
|
timeout
|
Number
|
选填,设置请求超时时间(毫秒),此设置将覆盖全局设置。
|
async
|
Boolean
|
选填,默认为 true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。
注1:同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行
注2:App不支持同步加载。
|
在 cpt 的单元格超链 JavaScript 脚本中发 ajax 请求,且在不同的回调函数中处理不同的情况:
var username = "1";
var password = "1";
FR.ajax({
url:"http://env.finedevelop.com:59204/Test
/ReportServer?op=fs_load&cmd=sso",
data:{
fr_username:username,
fr_password:password
},
dataType:"jsonp",//跨域采用jsonp方式
timeout:5000,//超时时间(单位:毫秒)
//success:function(data) { //data参数视返回值情况而定
//FR.Msg.alert("success",data.status);
//},
//error:function(errorThrown){
//FR.Msg.alert("error",errorThrown);
//},
complete: function(res,textStatus){
FR.Msg.alert("complete",textStatus);
}
})
某些应用场景下,如果只允许在登录状态下执行一些操作,不登录就不能执行,要先判断当前的登录状态。如下图所示:
就可以通过 FR.ajax 在不刷新页面的情况下,请求登录状态并返回,如下实现方式。
1)新建模板,添加一个按钮,按钮名称修改为「查看登录状态」。如下图所示:
2)点击按钮,为按钮添加一个「点击」事件,事件内容为在不刷新页面的情况下,请求登录状态并返回。如下图所示:
JavaScript 代码如下:
FR.ajax({
url: "/webroot/decision/login/info",
async: true,
complete: function (res, status) {
if (status == 'success') {
var u = FR.jsonDecode(res.responseText);
if (u != null && u.data) {
FR.Msg.alert("通知","登录状态");
//u.data.ip u.data.time u.data.city 分别可返回上次登录ip、时间、城市
}else{
FR.Msg.alert("通知","登出状态");
}
}
}});
3)保存模板,点击「分页预览」,效果如应用场景中所示。
点击可下载模板:
实时获取登录状态.cpt
注:需安装「
FineVis数据可视化
」插件 V1.8.0 及之后的版本。
FVS 可视化看板中给
标题组件
添加一个「JavaScript」交互点击事件,步骤如下图所示:
JavaScript 代码如下:
注:FVS 中使用代码时需注意将 FR.xxx 换成 duchamp.xxx ,且参数格式均为 json 格式。
duchamp.ajax({
url: "/webroot/decision/login/info",
async: true,
complete: function (res, status) {
if (status == 'success') {
var u = duchamp.jsonDecode(res.responseText);
if (u != null && u.data) {
duchamp.Msg.alert({
title: "通知",
message: "登录状态",
});
//u.data.ip u.data.time u.data.city 分别可返回上次登录ip、时间、城市
} else {
duchamp.Msg.alert({
title: "通知",
message: "登出状态",
});
}
}
}
});
预览效果如下图所示:
点击下载模板:
JS实现查看平台登录状态.fvs