[Catalyst] Catalyst::View::JSON & jqGrid

Xiao Yafeng xyf.xiao at gmail.com
Mon Jun 28 04:17:30 GMT 2010

     I'm using Catalyst::View::JSON and
Catalyst::TraitFor::Controller::jQuery::jqGrid to retrieve JSON data
to front page. Below is the code concerned (copy much partially from
Catalyst::TraitFor::Controller::jQuery::jqGrid example):

package UW::Controller::Site;
use utf8;
use Moose;
use namespace::autoclean;
BEGIN {extends 'Catalyst::Controller'; }
with 'Catalyst::TraitFor::Controller::jQuery::jqGrid';

sub json : Local{
my ($self, $c) = @_;
my $merchant_rs = $c->model('WindyDB::Merchant')->search({});
$merchant_rs = $self->jqgrid_page($c, $merchant_rs);
   my $row = 0;
my @row_data;
my $i = 0;
while (my $mer = $merchant_rs->next){
$i ++;
my $mer_id = $mer->mer_id;
my $single_row = {
'id'   => $i,
'cell' => [
'id' => $mer->mer_id,
'name' => $mer->mer_name,
push @row_data, $single_row;


$c->log->debug( @row_data);
$c->stash->{json_data}->{rows} = \@row_data;
$c->stash->{current_view}  = 'JSON';

But I found the format is a little weird :
cell:["test1","6"]},{id:2, cell["test2","7"]}],"total":1}}
Actually, as jqGrid doument, data format should be:
{ total: "xxx", page: "yyy", records: "zzz", rows : [ {id:"1",
cell:["cell11", "cell12", "cell13"]}, {id:"2", cell:["cell21",
"cell22", "cell23"]}, ... ] }

Does That means "current_view" and "json_data" pairs are surplus? So
is there a way to remove current_view and json_data before server
or does I use the modules incorrectly? I'm new to Catalyst and jqGrid,
please help.
Any replies are really appreciated!

More information about the Catalyst mailing list