Catalyst :: View :: JSON和jqGrid数据格式问题

时间:2010-06-28 04:20:41

标签: jquery perl catalyst

我正在使用Catalyst :: View :: JSON和 Catalyst :: TraitFor :: Controller :: jQuery :: jqGrid用于检索JSON数据 到头版。以下是相关代码(部分复制来自 Catalyst :: TraitFor :: Controller :: jQuery :: jqGrid示例):

   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;
$c->log->debug($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';
}

但我发现这种格式有点奇怪:

{"current_view":"JSON","json_data":{"page":0,"records":"8","rows":[{id:1,
cell:["test1","6"]},{id:2, cell["test2","7"]}],"total":1}}

实际上,作为jqGrid doument,数据格式应为:

{ total: "xxx", page: "yyy", records: "zzz", rows : [ {id:"1",
cell:["cell11", "cell12", "cell13"]}, {id:"2", cell:["cell21",
"cell22", "cell23"]}, ... ] }

这是否意味着“current_view”和“json_data”对是多余的?所以 有没有办法在服务器之前删除current_view和json_data 船? 或者我是否错误地使用了模块?我是Catalyst和jqGrid的新手, 请帮忙。 任何回复都非常感谢!

1 个答案:

答案 0 :(得分:0)

您使用的是什么JSON视图?它似乎正在转换存储中的所有内容(这是默认值。)JSON视图需要配置为仅转换存储的json_data字段中的内容。

在你的'MyApp.pm'中添加如下内容:

  

MyApp->配置({      'View :: JSON'=> {            expose_stash => 'json_data'      }   });

将MyApp替换为应用程序控制器的名称。