2013-11-25 5 views
1

Я создал базу данных с использованием MySQL и подключил ее к структуре Catalyst, чтобы создать веб-интерфейс. Я должен визуализировать свои данные, используя d3.js, который получает данные в формате JSON.экспортировать данные в JSON через структуру Catalyst

Я создал скрипт php, который запрашивает базу данных и экспортирует результат запроса в формате JSON.

К сожалению, мне не удалось найти способ использования моего php-скрипта внутри катализатора. Есть ли лучший способ запросить базу данных и экспортировать данные в формате JSON, чтобы использовать их в моей диаграмме d3.js?

Любая помощь очень ценится.

+0

Вы говорите о каркасе perl Catalyst, правильно? Потому что введение PHP в микс звучит очень нерегулярно. – RET

+1

да, я говорю о каркасе катализатора perl. Я думал, что могу использовать php внутри катализатора, но теперь понимаю, что это невозможно, и я пытаюсь найти альтернативы. Мне удалось запросить базу данных внутри контроллера и сохранить результат запроса в переменной, которую я занес, но я не могу понять, как экспортировать запрос в формате JSON, чтобы использовать его в моей диаграмме d3.js. –

+1

OK. См. Мой ответ для дальнейшего объяснения. – RET

ответ

0

Вы можете сделать JSON через Catalyst::View::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, вы можете confifur поведение или 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 
}; 
+0

Благодарю вас за ответ. Я тоже нашел это, но я не могу полностью понять, как его использовать. Не могли бы вы рассказать подробнее? Большое спасибо –

1

Вы можете использовать Catalyst :: Вид: 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; 

Это должно вернуть версию JSONified из $result в d3.js

Если вы пишете много AJAX кода в вашем приложении, я бы определенно рекомендовал получить вашу голову вокруг C :: V :: JSON подход.

Смежные вопросы