使用 D3 Xhr 调用 Perl 脚本

Call Perl script using D3 Xhr

本文关键字:Perl 脚本 调用 Xhr D3 使用      更新时间:2023-09-26

我有一个带有HTML表单的Web应用程序。当我按提交时,我想将此表单中的值提交到 perl 脚本 parseDatabaseData_v2.pl,该脚本从数据库中获取数据并创建该数据的 JSON 字符串。

然后,我想使用 D3 图可视化此 JSON 数据。以下使用 jquery ajax 的代码工作,并按预期从 perl 脚本返回 JSON。

    var runFromDate = $('#runDateSelectBox1').val();
    var runToDate = $('#runDateSelectBox2').val();
    var barcode = $('#barcodesSelectBox').val();
    var dataString = 'runFromDate='+ runFromDate + '&runToDate=' + runToDate + '&barcode=' + barcode;
    // ajax command
    $.ajax({
        type: 'POST',
        url: './cgi-bin/parseDatabaseData_v2.pl',
        async: true,
        data: dataString,
        dataType: "json",
        success: function(data) {
              console.log("succesfully called script");
        }
    }); // end of ajax command

在perl脚本中,我使用cgi->param('runFromDate');来获取发布的参数。

但是,由于我使用 NVD3 的lineWithFocusChart可视化数据,因此我想使用 d3.xhr 调用脚本。

当我创建以下 d3.xhr 请求时,脚本不起作用(它被调用,但无法获取参数)。

    var runFromDate = document.getElementById("runDateSelectBox1").value;
    var runToDate = document.getElementById("runDateSelectBox2").value;
    var barcode = document.getElementById("barcodesSelectBox").value;
    var dataString = 'runFromDate='+ runFromDate + '&runToDate=' + runToDate + '&barcode=' + barcode;
    d3.xhr("./cgi-bin/parseDatabaseData_v2.pl")
      .header("Content-Type", "application/x-www-form-url-encoded")
      .post(dataString,function(error, data){
          console.log("succesfully called script");
              console.log(data);
      });

我已经尝试了各种格式化数据字符串的方法,包括将其格式化为 JSON,如 D3 API 参考中所述。

如果有人愿意帮助我,我将不胜感激。

谢谢

科恩

url 和编码之间有一个虚假的连字符!

改变

.header("Content-Type", "application/x-www-form-url-encoded")

.header("Content-Type", "application/x-www-form-urlencoded")

看起来你不是唯一一个,正如最近的另一个答案所显示的那样。似乎有问题的代码已经在 d3.js wiki 中,所以我也更新了它。