2011-12-06 33 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

的问题,我只是在主页面中包含了所有需要的外部脚本 - 但是这是为了加载内联脚本非常好用 - 谢谢:) –