【问题标题】:export data to JSON through Catalyst framework通过 Catalyst 框架将数据导出为 JSON
【发布时间】:2013-12-10 17:45:15
【问题描述】:

我使用 MySQL 创建了一个数据库并将其连接到 Catalyst 框架以创建 Web 界面。 我必须使用d3.js 可视化我的数据,它以 JSON 格式获取数据。

我创建了一个查询数据库并以 JSON 格式导出查询结果的 php 脚本。

不幸的是,我还没有找到在催化剂中使用我的 php 脚本的方法。有没有更好的方法来查询数据库并以 JSON 格式导出数据以便在我的 d3.js 图表中使用它们?

非常感谢任何帮助。

【问题讨论】:

  • 您说的是 perl Catalyst 框架,对吧?因为在混音中引入 PHP 听起来非常不规则。
  • 是的,我说的是 perl 催化剂框架。我以为我可以在催化剂中使用 php,但现在我明白这是不可能的,我正在尝试找出替代方案。我设法在控制器内查询数据库并将查询结果存储在一个变量中,然后我将其存储但我不明白如何以 JSON 格式导出查询以便在我的 d3.js 图表中使用它
  • 好的。请参阅我的答案以获得进一步的解释。

标签: php mysql json d3.js catalyst


【解决方案1】:

你可以通过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
};

【讨论】:

  • 感谢您的回答。我也找到了这个,但我不能完全理解我应该如何使用它。你能详细说明一下吗?非常感谢
【解决方案2】:

您可以按照 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 的 JSON 化版本返回到 d3.js

如果您在应用程序中编写大量 AJAX 代码,我绝对建议您了解 C::V::JSON 方法。

【讨论】:

    猜你喜欢
    • 2020-12-17
    • 2020-10-27
    • 1970-01-01
    • 2012-01-18
    • 2021-08-15
    • 2015-09-28
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多