我有一个带有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,如the D3 API Reference中所述。
如果有人愿意帮助我,我将非常感激。
谢谢,
柯恩
答案 0 :(得分:0)
你在url和编码之间有一个虚假的连字符!
更改
.header("Content-Type", "application/x-www-form-url-encoded")
到
.header("Content-Type", "application/x-www-form-urlencoded")
看起来你不是this other recent answer所展示的唯一一个。似乎有令人讨厌的代码已经在d3.js wiki中,所以我也更新了它。