...
以数据集BusinessViewService的API作为示例,使用JS通过 HTTP JSON的方式,调用Smartbi服务器提供的所有方法。
其它Service的API的操作方式是类似的。
注意 |
---|
JS调用smartbi接口需要先解决跨域问题。 |
示例代码:
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test BusinessViewService</title>
<script type="text/javascript" src="http://libs.baidu.com/jquery/1.7.2/jquery.js"></script>
<script type="text/javascript" src="http://libs.baidu.com/json/json2/json2.js"></script>
</head>
<body>
<textarea id="output" rows="10" cols="40"></textarea>
<script type="text/javascript">
function execRMI(className, methodName, paramArray, callback, sync) {
$.ajax('http://localhost:18080/smartbi/vision/RMIServlet', {
type : 'POST',
async : !sync,
data : {
'className' : className,
'methodName' : methodName,
'params' : JSON.stringify(paramArray)
},
dataType : 'json',
success : callback,
failure : callback,
error : callback
});
}
$(function(){
var logined = false;
var isSync = true; // 同步
execRMI('UserService', 'login', [ 'admin', 'manager' ], function(data) {
if (data && data.retCode === 0) {
logined = data.result;
}
}, isSync);
$('#output').val('logined=' + logined + '\n');
if (logined) {
testBusinessViewService();
}
});
function println(msg) {
var text = $('#output').val() + msg + '\n';
$('#output').val(text);
}
function testBusinessViewService() {
// 数据集ID(对应示例库中的"根目录\功能演示\查询定义\原生SQL查询\带参数的原生SQL")
var bizViewId = "I2c94907127855da201278df551b62602";
// 参数ID(对应"带参数的原生SQL"的输出参数标识)
var paramId = "OutputParameter.I2c94907127855da201278df551b62602.产品名称参数_列表对话框";
// 参数真实值
var paramValue = "牛奶,花生,饼干,猪肉,汽水";
//
var paramsJsonArrStr = JSON.stringify([{id: paramId, value:paramValue}]);
// 每页行数
var rowsPerPage = 2;
// 是否获取总行数
var getTotalRows = true;
//
var isSync = true; // 同步
execRMI('BusinessViewService', 'openLoadDataView', [ bizViewId, paramsJsonArrStr, rowsPerPage,
getTotalRows ], function(data) {
if (data && data.retCode === 0) {
var ret = data.result;
var loadDataClientId = ret.clientId;
var totalRows = ret.totalRowCount;
var fieldNames = ret.fieldNames;
println('=======================');
println(fieldNames.join(', '));
println('=======================');
var pages = parseInt(totalRows / rowsPerPage) + (totalRows % rowsPerPage == 0 ? 0 : 1);
for ( var pageNum = 0; pageNum < pages; pageNum++) {
execRMI('BusinessViewService', 'loadViewData', [ loadDataClientId, pageNum ], function(
pageData) {
if (pageData && pageData.retCode === 0) {
var dataList = pageData.result;
for ( var i = 0, len = dataList.length; i < len; i++) {
println(dataList[i].join(', '));
}
}
},isSync); //同步,执行loadViewData完成后才能closeLoadDataView
}
execRMI('BusinessViewService', 'closeLoadDataView', [ loadDataClientId ]);
}
}, isSync);
}
</script>
</body>
</html> |
示例效果: