调pythonapi

var aa = "364,368,372,384,384,384,404,428,428,432,460,468,500,512";

// 目标网址

const url = 'http://localhost:3355/boxcox_transform?data=' + aa;

// 创建一个新的 XMLHttpRequest 对象

const xhr = new XMLHttpRequest();

// 设置请求方法和目标 URL

xhr.open('GET', url, true);

var transformedData = null;

// 监听请求状态变化

xhr.onreadystatechange = function () {

  // 当请求状态为完成时

  if (xhr.readyState === XMLHttpRequest.DONE) {

    // 确保请求成功

    if (xhr.status === 200) {

      console.log('Response:', xhr.responseText);

      // 赋予控件实际值

      var aa = xhr.responseText;

      // 解析JSON字符串

var jsonResponse = JSON.parse(aa);

console.log('bbb:::',jsonResponse);

// 获取lambda_value

var lambdaValue = jsonResponse.lambda_value;

// 获取transformed_data数组

transformedData = jsonResponse.transformed_data;

console.log('aaa:::',lambdaValue);

console.log('cccb:::',transformedData);

    } else {

      console.error('Error:', xhr.status, xhr.statusText);

    }

  }

};

// 发送请求

xhr.send();

setTimeout( 500)

console.log("eeee",transformedData)

FR.doHyperlinkByPost({

//报表路径

"url":"/webroot/decision/view/report?viewlet=WorkBook2.cpt",    //参数

"para":{

"__pi__":true,    //是否显示参数面板

"op":"write",

"list":transformedData

},

"target":"_dialog",    //对话框方式打开

"feature":{

"width":1920,

"height":1080,

"isCenter":true,     //是否居中显示

"title":"标题"

}

})

应该怎么改 ,我想要将api获取的值作为参数传递,但是我现在console.log("eeee",transformedData)这个为null

FineReport 帆软用户doraVX4Qmy 发布于 2024-11-1 14:35
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
用户k6280494Lv6专家互助
发布于2024-11-1 14:54
最佳回答
0
ScyalcireLv7高级互助
发布于2025-8-18 17:24

代码中transformedData为null的主要原因是异步请求未完成时就执行了后续操作。XMLHttpRequest是异步的,而setTimeout(500)写法错误且无法保证请求完成‌

-------------

解决方案:

  1. 将FR.doHyperlinkByPost操作移到请求成功的回调函数内

  2. 修正setTimeout写法

  3. 添加JSON解析错误处理‌

const aa = "364,368,372,384,384,384,404,428,428,432,460,468,500,512";
const url = 'http://localhost:3355/boxcox_transform?data=' + aa;
const xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
let transformedData = null;
xhr.onreadystatechange = function() {
  if (xhr.readyState === XMLHttpRequest.DONE) {
    if (xhr.status === 200) {
      try {
        const jsonResponse = JSON.parse(xhr.responseText);
        transformedData = jsonResponse.transformed_data;
        console.log('Transformed data:', transformedData);
        
        // 在这里调用后续操作
        FR.doHyperlinkByPost({
          "url": "/webroot/decision/view/report?viewlet=WorkBook2.cpt",
          "para": {
            "__pi__": true,
            "op": "write",
            "list": transformedData
          },
          "target": "_dialog",
          "feature": {
            "width": 1920,
            "height": 1080,
            "isCenter": true,
            "title": "Box-Cox变换结果"
          }
        });
      } catch (e) {
        console.error('JSON解析错误:', e);
      }
    } else {
      console.error('请求失败:', xhr.status, xhr.statusText);
    }
  }
};
xhr.send();

  • 3关注人数
  • 117浏览人数
  • 最后回答于:2025-8-18 17:24
    请选择关闭问题的原因
    确定 取消
    返回顶部