2011-12-06 10 views
2

私はいくつかのサイトで作成したCMSの改訂版を作成中です。ajaxでミニインタフェースを読み込む

この再設計されたバージョンでは、左にリストがあり、管理できるセクション(テキスト、フォトギャラリーなど)が表示されます。右側では、ユーザーが項目を選択したときにAJAXを介して適切なUIをロードしたいと考えています。

var map; 
$(document).ready(function() { 
    map = {"text":"txt_interface.php","gallery":"gallery_interface.php"}; 

    $('#left_pane li').click(function() { 
     var id = $(this).attr('id'); 
     if (map[id].length) { 
      // show loading stuff etc. 
      var url = 'ajax/'+map[id]; 
      $.ajax({ 
       url: url, 
       type: 'GET', 
       success: function(res) { 
        $('#right_content').html(res); 
       } 
      }); 
     } 
    }); 
}); 

しかし、私は、特定のページ(例えばTinyMCEは)外部JSを必要とすることを実現:

は、私は単純に、様々なファイルへの要求を行うこと、及び、divの中にHTMLを無理に勧めので等によって始まりました。だから、JSONで別にjsリファレンスを渡して、$.getScriptを使ってさまざまな解決策を試みましたが、すべてがひどく複雑になりました。

好ましくはフレームを使用せずに、これを達成する最も簡単な方法は何ですか?

+0

JSを実行する必要がある方法とその方法の具体例をいくつか教えてもらえますか?メインページのjsファイルを取り込んで、適切なコンテンツを引き出すときに実行することができるようですが、具体的な例がない場合は方向を示すのが難しいです。 –

+0

@BenLこの特定のインスタンスでは、tinyMCEソースファイル(外部)とtinyMCE 'tinyMCE.init();にコンテンツがロードされた後に呼び出される関数が必要です。その呼び出し。 –

答えて

1

あなたはそれが(私はGoogleが特定のJavaScriptの解析を延期するためにこれに似た何かを知っている)あなたのAJAXコールバック関数でアウトを引き出すことができるブロックであなたJavaScriptを置くとevalことができます。

 $.ajax({ 
      url: url, 
      type: 'GET', 
      success: function(res) { 
       var tmp = res.split("{script}"), 
        code = tmp[1].split("{/script}")[0]; 
       eval(code); 
       $('#right_content').html(tmp[0]); 
      } 
     }); 

http://jsfiddle.net/4HReW/

これはあなたが定期的に<script>/</script>タグの代わりにとJavaScriptブロックがAJAX経由で引っ張られたコンテンツの最後に来ること{script}/{/script}を置くことを前提としています。ここではjsfiddleです。

+0

これはいいです - 私はevalについて悪いことを聞いたことがあります:/ - また、外部JS –

+0

の問題を解決しません。私はメインページに必要なすべての外部スクリプトを含んでいますインラインスクリプトは本当にうまく動作します - ありがとう:) –

関連する問題