2009-08-05 6 views
1

Prototype/AJAXを使用して外部PHPページからHTML/Javascriptを取得しようとしていますが、HTMLレンダリングは問題ありませんが、AJAX要求。プロトタイプAJAXリクエスト内でJavascriptを動作させるにはどうすればいいですか

ページがデータを読み込んでいるときにローディングバーも表示していますが、この部分は問題ありません。私のSymfony PHP +プロトタイプコードは以下の通りです。正しい方向に私を置くかもしれないどんな助言も非常に高く評価されるでしょう! 「The Definitive Guide to Symfony」から

<?php echo javascript_tag(
     remote_function(array(
     'update' => 'getinfo', 
     'method' => 'get', 
     'script'  => true, 
     'url'  => 'event/load?id='.$sf_params->get('id'), 
     'loading' => "Element.show('loading')", 
    'complete' => "Element.hide('loading')", 
)) 
) ?> 

答えて

2

あなたがチェックするためのツールを使用する場合は、リモート応答のためのスクリプトの実行を有効にしても、あなたが実際に、リモートでコードにスクリプトが表示されません生成されたコード。スクリプトは実行されますが、コードには表示されません。独特ですが、この動作は完全に正常です。

これは、remote_functionがPrototypeのAjax.Updaterを使用して実装されているためです。 remote_functionscriptオプションは、Ajax.UpdaterのevalScriptsオプションになります。

evalScriptsを使用すると、すべてのブロックが評価されます。これがページに含まれることを意味するものではありません。それらのコンテンツは、単純にネイティブのeval()関数に渡されます。 [...関数を定義するには、]あなたは次の構文を使用する必要があります。

// This kind of script WILL work if processed by Ajax.Updater: 
coolFunc = function() { 
    // Amazing stuff! 
} 

これはスコープの問題を経験している示唆しています。それは、event.phpによるjavascript出力を見ることなく私が言うことができるほどです。

関連する問題