【发布时间】:2017-04-25 18:18:06
【问题描述】:
我想通过单击按钮重新加载某个 div 中的 js,而无需重新加载整个页面。也可以只重新加载加载js的div。
我已经尝试了几种解决方案,例如: http://www.philnicholas.com/2009/05/11/reloading-your-javascript-without-reloading-your-page/
或其他帖子的一些想法,例如从这里 Refresh/reload the content in Div using jquery/ajax
以这段代码为例:
$("#content").load(location.href + " #content");
仅重新加载 div,但不重新加载脚本,并且不显示任何内容。
使用 ajax 请求,它将所有 js 代码作为文本放入 div 中。
你还有什么想法吗?
编辑:加载的脚本根据会话的某些值显示内容。单击按钮会更改值,这将导致 div 中的另一个内容运行脚本。
编辑 2: 当前状态是重新加载整个页面: 这是脚本添加其他内容(其他 div 和内容)的 div:
<div id="dynamic_content">
<script src="myjs.js"></script>
</div>
这里是改变内容视图的按钮:
<div id="change_view_mode" onclick="change_view()">
<script>
if(window.SESSION.view_mode == "simple"){
document.getElementById("change_view_mode").innerHTML = "complex tree";
}else{
document.getElementById("change_view_mode").innerHTML = "simple tree";
}
</script>
</div>
这里是改变视图的功能,我试图实现内容的重新加载:
//toggle view and reload the page
function change_view(){
if(window.SESSION.view_mode == "simple"){
$.ajax({
url:'set_view_mode.php',
async: false,
});
//$("#dynamic_content").load(location.href + " #dynamic_content");
location.reload(true);
}else{
$.ajax({
url:'set_view_mode.php',
async: false,
});
//$("#dynamic_content").load(location.href + " #dynamic_content");
location.reload(true);
}
}
我通过调用一个小的 php 文件来更改会话中的 view_mode。然后我尝试了提到的几件事(其中一个作为注释留在代码中)。这取决于当前视图。所以它只是将视图从一个切换到另一个。
【问题讨论】:
-
你好@Maki,检查我的答案。这是你需要的吗?
标签: javascript jquery html ajax reload