You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jedox PHP宏中获取eval执行JavaScript代码的返回值

How to Retrieve JavaScript Return Values from Jedox PHP Macros Using the 'eval' Pattern

作为经常和Jedox宏打交道的开发者,我来帮你拆解这个问题并给出可行的解决方案。

首先,先理清你这段代码的运行机制:
你的test() PHP宏返回的嵌套数组是Jedox的客户端指令格式:第一个元素'eval'是指令标识,告诉Jedox前端(浏览器环境)要执行后面跟着的JavaScript代码。这段JS是自执行函数,只会在浏览器控制台打印内容,但默认不会把任何计算结果传回给服务器端的PHP宏——这就是你加了return却拿不到值的核心原因。

解决方案:将JS返回值传回PHP宏

要让JS的计算结果回到PHP层面,需要借助Jedox的前端API把值发送回服务器,具体分三步:

  1. 修改JS代码,添加返回值传递逻辑
    在自执行函数中计算出结果后,调用Jedox内置的Jedox.backend.runMacro方法,把结果作为参数传递给另一个专门接收值的PHP宏。示例JS代码:

    (function(){
        // 这里是你的业务逻辑,计算出需要返回的值
        let jsResult = "Hello from JavaScript!";
        
        // 调用后端宏传递结果,第一个参数是宏名称,第二个是参数数组
        Jedox.backend.runMacro("receiveJsResult", [jsResult], function(response) {
            // 可选:打印后端宏的响应日志
            console.log("PHP宏响应:", response);
        });
        
        return jsResult; // 如果需要在前端直接使用这个值,可保留
    }())
    
  2. 创建接收结果的PHP宏
    在Jedox中新建一个PHP宏receiveJsResult,用于接收并处理JS传递过来的值:

    function receiveJsResult($jsResult) {
        // 这里可以根据需求处理结果,比如存储到单元格、写入日志等
        $message = "成功从JS接收值:" . $jsResult;
        echo $message;
        
        // 可选:返回响应给前端
        return $message;
    }
    
  3. 更新原test()宏的返回内容
    把修改后的JS代码替换到原宏中:

    function test() {
        return array(
            array(
                'eval', 
                "(function(){ let jsResult = 'Hello from JavaScript!'; Jedox.backend.runMacro('receiveJsResult', [jsResult], function(res){console.log(res);}); return jsResult; }())"
            )
        );
    }
    

额外场景:仅在前端使用JS返回值

如果你的需求只是在前端(比如Jedox Web界面)使用JS的计算结果,不需要传回服务器,可以直接操作Jedox的UI元素,比如把值写入指定单元格:

(function(){
    let calculationResult = 12345;
    // 将结果写入Sheet1的A1单元格
    Jedox.web.calc.setCell("Sheet1!A1", calculationResult);
    return calculationResult;
}())

内容的提问来源于stack exchange,提问作者bosskay972

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:03:11