我正在为一些网站创建 CMS 的修订版本。
在这个重新设计的版本中,左侧有一个列表,显示您可以管理的不同部分(文本、照片库等)。在右边,当用户选择一个项目时,我想通过 AJAX 加载适当的 UI。
我首先简单地向各种文件发出请求,然后将 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)。因此,我尝试了各种解决方案,例如将 js 引用单独传递到 JSON 中并使用 $.getScript
,但这一切都变得过于复杂。
最好不使用框架,实现此目的的最简单方法是什么?
最佳答案
您可以将 JavaScript 放在一个 block 中,您可以在 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 block 出现在通过 AJAX 提取的内容的末尾。
关于php - 使用 ajax 加载迷你界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404120/