我使用MySQL创建了一个数据库,并将其连接到Catalyst框架,以便创建一个web界面。我必须使用d3.js来可视化我的数据,它以JSON格式获取数据。
我创建了一个php脚本,用于查询数据库并以JSON格式导出查询结果。
不幸的是,我还没有找到在catalyst中使用php脚本的方法。有没有更好的方法可以查询数据库并以JSON格式导出数据,以便在我的d3.js图表中使用它们?
非常感谢您的帮助。
您可以按照Julien的建议使用Catalyst::View::JSON,但对于简单的情况:
=== SomeController.pm ===
package MyApp::Controllers::SomeController;
use strict;
use warnings;
use base 'Catalyst::Controller';
use JSON;
sub my_json_action :Local {
my ($self, $c, @args) = @_;
my $result = ... some process or logic ...
$c->res->body(to_json($result))
}
1;
这应该会将$result
的JSONified版本返回给d3.js
如果你在你的应用程序中写了很多AJAX代码,我绝对建议你考虑一下C::V::JSON方法。
您可以通过Catalyst::View::JSON呈现JSON。
sub my_json_action :Local {
my ($self, $c, @args) = @_;
my $result = ... some process or logic ...
$c->stash(
'foo' => 'bar',
'array' => [1,2],
);
$c->forward('MyApp::View::JSON');
}
这将生成以下JSON:
{"foo":"bar","array":[1,2]}
在MyApp.pm中,您可以确认行为或VIEW::JSON:
__PACKAGE__->config->{'View::JSON'} = {
allow_callback => 1, # defaults to 0
# callback_param => 'bgm', # defaults to 'callback'
# expose_stash => [ qw(id status file error) ], # defaults to everything
};