Javascript 使用D3XHR调用Perl脚本
我有一个带有HTML表单的web应用程序。当我按下submit键时,我想将这个表单中的值提交到一个perl脚本parseDatabaseData_v2.pl,它从数据库中获取用户的数据,并创建该数据的JSON字符串 然后,我想使用D3图来可视化这个JSON数据。 以下代码使用jQueryAjax工作,并按预期从perl脚本返回JSONJavascript 使用D3XHR调用Perl脚本,javascript,json,d3.js,nvd3.js,mod-perl,Javascript,Json,D3.js,Nvd3.js,Mod Perl,我有一个带有HTML表单的web应用程序。当我按下submit键时,我想将这个表单中的值提交到一个perl脚本parseDatabaseData_v2.pl,它从数据库中获取用户的数据,并创建该数据的JSON字符串 然后,我想使用D3图来可视化这个JSON数据。 以下代码使用jQueryAjax工作,并按预期从perl脚本返回JSON var runFromDate = $('#runDateSelectBox1').val(); var runToDate = $('#runD
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')
以获取发布的参数
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);
});
但是,由于我正在使用NVD3的lineWithFocusChart
可视化数据,因此我想使用d3.xhr调用脚本
当我创建下面的d3.xhr请求时,脚本不起作用(调用了get,但无法获取参数)
我尝试了各种格式化数据字符串的方法,包括将其格式化为JSON,如中所述
如果有人愿意帮助我,我将不胜感激
谢谢
Koen您在url和编码之间有一个虚假的连字符 改变
.header("Content-Type", "application/x-www-form-url-encoded")
到
看起来你不是唯一一个这样的人。似乎有问题的代码已经出现在d3.js维基中,所以我也更新了它 你能加上
error
的值吗?(或者它是空的?)看看这个答案,我刚刚检查了它,它是空的。你比较了firebug的“Net”选项卡中jQuery和d3示例中发送的内容了吗?你能不能再举一个dataString
字符串值的例子,这似乎可以解决这个问题。非常感谢你,克里斯托弗。
.header("Content-Type", "application/x-www-form-urlencoded")