Ajax.Updaterでscriptを実行
Ajax.UpdaterのevalScriptsオプションをtrueにすると、返ってきたresponseText内に記述してあるjavascriptが実行されるようになる模様。
<p>js off</p> <script type="text/javascript"> $('a').innerHTML = '<p>js on</p>'; </script>
shop/show.php
<form id="aForm" action="shop/add_to_cart.php" method="post" onsubmit="new Ajax.Updater('shop/add_to_cart.php', {asynchronous: true, evalScripts: true, parameters: Form.serialize(this) }); return false;"> <div id="box">...</div> <input type="submit" name="commit" value="commit" /> </form>
上のスクリプトは検証してないんだけど、とりあえずあんな感じで使います。responseTextがロードされた上でスクリプトが実行できるのがいいところ。
んで実際にはsymfony使ってて、form_remote_tagにオプション指定してtrueにできるんだけど、名前が違うのでメモ。
<?php use_helper('Javascript') ?> <?php echo form_remote_tag(array('url' => 'shop/add_to_cart', 'update' => 'box', 'script' => true, )) ?>