2011-12-06 58 views
2

我正在創建我爲少數網站製作的CMS修訂版本。使用ajax加載迷你接口

在這個重新設計的版本中,左側有一個列表,顯示您可以管理的不同部分(文本,照片庫等)。在右側,我想在用戶選擇一個項目時通過AJAX加載適當的用戶界面。

我開始通過簡單地使各種文件的請求,並順手把HTML在一個div,像這樣:

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); 
       } 
      }); 
     } 
    }); 
}); 

然而,我才明白,某些網頁可能需要外部JS(如TinyMCE的) 。所以,我嘗試了各種解決方案,例如分別在JSON中傳遞js引用並使用$.getScript,但這一切都變得非常複雜。

最好不使用框架,實現此目的最簡單的方法是什麼?

+0

你能給我們提供一些JS需要運行的具體例子嗎?看起來你可以在你的主頁中插入js文件,然後在提供正確的內容時運行你所需要的,但是當沒有一個具體的例子時,很難給出方向。 –

+0

@BenL在這個特定的實例中,我給出了我需要tinyMCE源文件(外部)的問題,以及一旦內容加載到tinyMCE'tinyMCE.init();' - 我將一些參數傳入那個電話。 –

回答

1

你可以把你的JavaScript中,你可以拉出來在你的AJAX回調函數和eval它(我知道谷歌做一些類似的推遲一定的JavaScript解析)塊:

 $.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]); 
      } 
     }); 

這裏是一個的jsfiddle:http://jsfiddle.net/4HReW/

這是假設你把{script}/{/script}代替常規<script>/</script>標籤和JavaScript的塊來在內容的一端通過AJAX拉入。

+0

這很好 - 雖然我聽說過有關eval的壞消息:/ - 現在也沒有解決外部JS –

+0

的問題,我只是在主頁面中包含了所有需要的外部腳本 - 但是這是爲了加載內聯腳本非常好用 - 謝謝:) –