<div class="gmail_extra">Alternatively, you can use <a href="https://metacpan.org/module/DBIx::Class::Helper::Row::ToJSON">https://metacpan.org/module/DBIx::Class::Helper::Row::ToJSON</a> to allow for automatic serialization.<br>
<br>Cheers,<br>Matt<br><br><div class="gmail_quote">On Wed, Apr 25, 2012 at 9:53 AM, will trillich <span dir="ltr"><<a href="mailto:will.trillich@serensoft.com" target="_blank">will.trillich@serensoft.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Roland --<div><br></div><div>Assuming your JSON view is trying to encode the 'result' item from your stash, first let's see why encoding a blessed object is fraught with peril.</div>
<div><br></div><div>Try running your server in debug mode, and when you get to the ->stash() line, try "x $rs". You really want all that JSON-encoded?</div>
<div><br></div><div>Blessed objects (such as a recordset or a request or a response) typically contain many, many layers that are often going to be overkill when encoding stuff as JSON, when really you just want a few top-level items.</div>
<div><br></div><div>So you should iterate through your objects and/or collections and create a hashref that contains plain primitives (or maybe a few more hashrefs or arrayrefs when needed) instead of asking JSON to translate blessed objects that are dozens of layers deep.</div>
<div><br></div><div>Instead of doing ...->stash( result => [ $rs ] ) build your own data structure, by doing something like</div><div><br></div><div>my $json = {</div><div> data => [],</div><div> count=> $rs->count,</div>
<div> other => $self->blah,</div><div>};</div><div>while ( my $rec = $rs->next ) {</div><div> my %fields = $self->get_important_values( $rec );</div><div> push @{ $json->{data} }, { %fields );</div><div>
}</div><div>$c->stash( result => $json );</div><div><br></div><div><br></div><div><br><div class="gmail_quote"><div><div class="h5">On Wed, Apr 25, 2012 at 8:26 AM, Roland Philibert <span dir="ltr"><<a href="mailto:rphilibert@aptina.com" target="_blank">rphilibert@aptina.com</a>></span> wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
<div link="blue" vlink="purple" lang="EN-US"><div><p class="MsoNormal"><span lang="EN-GB">Hello all,<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB">I’d like to render some HTML content being formatted from a TT view via AJAX.<br>
Can anybody recommend a way to do that please?<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">The method I am using now for AJAX is REST controller and JSON View.<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">...<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB">sub ajaxaction :Local :ActionClass('REST') {}<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">sub ajaxaction _GET {<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal">
<span lang="EN-GB"> my ($self, $c) = @_;<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"> my $rs = $c->model(DN)->resultset(Table)->find(...);<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> my $body = $c->view(MYTT)->render($c,'dir/temp.mailtt',$c->stash( result => [ $rs ] )); </span><span style="font-family:Wingdings;background:yellow" lang="EN-GB">ß</span><span style="background:yellow" lang="EN-GB"> this is the weird bit I guess.</span><span lang="EN-GB"><u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> my @content =();<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"> push @content, $body;<u></u><u></u></span></p><p class="MsoNormal">
<span lang="EN-GB"> $self->status_ok(<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"> $c,<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"> entity => \@content,<u></u><u></u></span></p><p class="MsoNormal">
<span lang="EN-GB"> );<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB">}<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB">sub end :Private {<u></u><u></u></span></p><p class="MsoNormal">
<span lang="EN-GB"> my ($self, $c) = @_;<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"> $c->forward("View::JSON");<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB">}<u></u><u></u></span></p>
<p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB">..but doing this I get the error:<u></u><u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p>
<p class="MsoNormal">Caught exception in MyApp::View::JSON->process "encountered object 'MyApp::Model::DB::Table=HASH(0xdb2c330)', but neither allow_blessed nor convert_blessed settings are enabled at (eval 1606) line 151."<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p><p class="MsoNormal">Thanks for your help.<u></u><u></u></p><p class="MsoNormal">Roland<u></u><u></u></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><u></u> <u></u></span></p><p class="MsoNormal"><span lang="EN-GB"><u></u> <u></u></span></p></div></div>
<pre>Aptina (UK) Limited, Century Court, Millennium Way, Bracknell, Berkshire, RG12 2XT. Registered in England No. 06570543.
This e-mail and any attachments contain confidential information and are solely for the review and use of the intended recipient. If you have received this e-mail in error, please notify the sender and destroy this e-mail and any copies.
</pre><br></div></div>_______________________________________________<br>
List: <a href="mailto:Catalyst@lists.scsys.co.uk" target="_blank">Catalyst@lists.scsys.co.uk</a><br>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" target="_blank">http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst</a><br>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" target="_blank">http://www.mail-archive.com/catalyst@lists.scsys.co.uk/</a><br>
Dev site: <a href="http://dev.catalyst.perl.org/" target="_blank">http://dev.catalyst.perl.org/</a><br>
<br></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><span style="font-family:verdana">"We act as though comfort and luxury were the chief requirements of life, when all that we need to make us happy is something to be enthusiastic about." -</span><span style="font-family:verdana">- Albert Einstein</span><br style="font-family:verdana">
<br>
</font></span></div>
<br>_______________________________________________<br>
List: <a href="mailto:Catalyst@lists.scsys.co.uk">Catalyst@lists.scsys.co.uk</a><br>
Listinfo: <a href="http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst" target="_blank">http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst</a><br>
Searchable archive: <a href="http://www.mail-archive.com/catalyst@lists.scsys.co.uk/" target="_blank">http://www.mail-archive.com/catalyst@lists.scsys.co.uk/</a><br>
Dev site: <a href="http://dev.catalyst.perl.org/" target="_blank">http://dev.catalyst.perl.org/</a><br>
<br></blockquote></div><br></div>