自定义按钮实现收藏/取消收藏功能,JS获取当前报表的名称、存储路径、当前报表的URL的方法是什么

想要在cpt模板中增加一个自定义按钮来实现收藏/取消收藏功能,点击后可将该模板的名称、路径、URL、收藏人及收藏时间存入/删除到数据库中,请问大佬们有相关案例参考吗,获取当前报表名称存储路径、当前报表的URL的方法是什么

FineReport xiao-an 发布于 7 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于7 天前(编辑于 7 天前

image.png

----------

image.png

image.png

  • xiao-an xiao-an(提问者) var reportName = FR.reportName; // 获取报表名称 这样写获取不到报表名称,显示undefined
    2025-02-18 15:18 
  • Z4u3z1 Z4u3z1 回复 xiao-an(提问者) 看上面补充的吧。是写在参数设置里面
    2025-02-18 15:21 
  • xiao-an xiao-an(提问者) 回复 Z4u3z1 好的,我写的参数:Path 值:contextPath var reportPath = Path 后面输出的PATH怎么只有/webroot 请问这个您知道吗
    2025-02-18 16:11 
  • Z4u3z1 Z4u3z1 回复 xiao-an(提问者) 把你的 设置截图传上来看看
    2025-02-18 16:22 
最佳回答
0
yzmp754J5745601Lv3见习互助
发布于7 天前(编辑于 7 天前

window.location.hrefimage.png

最佳回答
0
用户k6280494Lv6资深互助
发布于7 天前

参数栏公式获取

image.png

  • xiao-an xiao-an(提问者) 谢谢解答,看到1楼的答案比较早哈
    2025-02-18 17:43 
最佳回答
0
小陈PhLv3见习互助
发布于7 天前

在帆软FineReport中,通过自定义按钮实现收藏/取消收藏功能,你可以使用JavaScript来获取当前报表的名称、存储路径以及当前报表的URL。以下是具体的实现方法:

1. 获取当前报表的名称

FineReport提供了全局变量来获取当前报表的名称。通常,你可以使用以下JavaScript代码来获取报表名称:

javascript

复制代码

var reportName = "${reportlet.name}";

2. 获取当前报表的存储路径

FineReport的报表存储路径通常不直接暴露为全局变量,但你可以通过解析报表的URL来间接获取报表路径。不过,获取完整的服务器路径需要一些额外的处理,通常你需要知道服务器的基本URL。

3. 获取当前报表的URL

要获取当前报表的完整URL,你可以使用JavaScript的window.location对象。以下是一个简单的示例:

javascript

复制代码

var currentUrl = window.location.href;

综合示例

假设你有一个自定义按钮,点击该按钮时会触发JavaScript代码,执行收藏/取消收藏功能。以下是一个综合示例:

html

复制代码

<!-- 假设你在FineReport的自定义按钮中嵌入以下HTML和JavaScript代码 -->

<button onclick="toggleFavorite()">

    <span id="favoriteStatus">收藏

</button>

 

<script>

    function toggleFavorite() {

        // 获取当前报表的名称

        var reportName = "${reportlet.name}";

 

        // 获取当前报表的URL

        var currentUrl = window.location.href;

 

        // 假设你有一个后端API接口来处理收藏逻辑

        // 例如:http://yourserver.com/api/favorite

        var apiUrl = "http://yourserver.com/api/favorite";

 

        // 你可以通过Ajax请求来调用后端接口,传递报表名称和URL作为参数

        var xhr = new XMLHttpRequest();

        xhr.open("POST", apiUrl, true);

        xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");

        xhr.onreadystatechange = function () {

            if (xhr.readyState === 4 && xhr.status === 200) {

                var response = JSON.parse(xhr.responseText);

                if (response.success) {

                    document.getElementById("favoriteStatus").innerText = "已收藏";

                } else {

                    document.getElementById("favoriteStatus").innerText = "收藏";

                }

            }

        };

 

        // 发送请求的数据

        var data = JSON.stringify({

            reportName: reportName,

            reportUrl: currentUrl

        });

        xhr.send(data);

    }

</script>

注意事项

后端接口:上面的示例假设你有一个后端API接口来处理收藏逻辑。你需要根据自己的后端实现来修改API URL和处理逻辑。

权限管理:确保用户有权限进行收藏操作,并在后端进行相应的权限验证。

跨域问题:如果你的FineReport服务器和后端API服务器不在同一个域下,需要注意跨域资源共享(CORS)问题。

通过以上方法,你可以在FineReport中实现自定义按钮的收藏/取消收藏功能,并获取当前报表的名称和URL。

  • 4关注人数
  • 46浏览人数
  • 最后回答于:7 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部