
W necie znalazłem prosty a zarazem pomocny tutorial o ajaxie z cakephp:
http://www.reversefolds.com/articles/show/ajax
wszystko jest pięknie dopóki w grę nie wchodzą polskie znaki, cały przykład jest w kodowaniu utf-8, kodowanie layoutu ajaxa tez jest poprawne, bo po wywołaniu URL'a: /things/view/0 polskie znaki są wyświetlane prawidłowo.
Problem jest na podstronce (/things/index), gdzie krzaki wyświetlaja się po kliknięciu na ajaxowy link , który zmienia zawartość diva w tekst z polskimi fontami.
więc problem leży zapewne w ustwieniach wykorzystywanego przez cake skryptu ajaxowego (prototype), nie wiem tylko jak tą opcję ustawić, czy zapomocą cake czy bezposrednio w samym skrypcie prototype, a może problem leży gdzieś indziej?
kod kontrolera:
<?php /** * $Id: approot/controllers/things_controller.php */ class ThingsController extends AppController { var $name = 'Things'; // we're not going to use a model for this example, but // it would be easy to use a database thanks to cake var $uses = null; /** * initial page load */ function index() { // preload dynamic data $this->set('data1', 'content will update here'); $this->set('data2', 'here too'); $this->render('neat'); }//index() /** * display content action * * @param int id of content to display */ function view($id) { // content could come from a database, xml, etc. 'become a cake baker',), 'we must also apply - bruce lee') ); $this->set('data1', $content[$id][0]); $this->set('data2', $content[$id][1]); // use ajax layout $this->render('neat', 'ajax'); }//view() }//ThingsController ?>
kod layoutu:
<!-- // approot/views/layouts/default.thtml --> <html> <head> <?php ?> </head><body> </body></html>
kod widoku:
<!-- // approot/views/things/neat.thtml --> <h1>Really neat stuff here</h1> <?php // update both divs ); // use an effect 'loading' => 'Effect.BlindDown('dynamic1')') ); ?> <hr/>