免责声明:我对这些内容很陌生,所以请记住这一点。
您好,
我使用AJAX设置网站以加载页面内容而无需离开页面。我有几个页面使用javascript来加载列表信息。
以下是链接设置:
#home
#list.php?list=$list_id
我有一个名为$ list_id的变量,并使用一些javascript来加载列表。我面临的问题是,如果我加载一个列表(让我们说ID为1的列表)然后返回并加载另一个列表(让我们说ID为2的列表)javascript没有重新加载到新列表ID的帐户。
无论如何我可以重新加载javascript代码来解释新变量而无需刷新页面吗?
谢谢!
答案 0 :(得分:4)
我完全不明白你面临的问题。 但是如果你想重新加载脚本而不刷新页面,你可以这样做:
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "somefile.js";
document.getElementsByTagName("head")[0].appendChild(script);
或使用jQuery.loadScript函数
答案 1 :(得分:1)
将HTML插入DOM脚本时执行。因此,当您通过AJAX加载一些HTML时,您可以执行包含的脚本。
答案 2 :(得分:0)
您是否可以将$ list_id存储在隐藏的输入字段中,然后在ajax调用后更新它?
e.g。
<input type="hidden" id="list-id" value="<?php echo $list_id; ?>" />
<script>
//ajax request
var $list_id = $('#list-id');
$.ajax({
url:'http://www.example.com/page.php',
data:'list_id=' + $list_id.val(),
success:function(data){
//do something
$list_id.val() = $list_id.val() + 1;
}
});
快速将这些拼凑在一起给你一个想法,所以可能会有一些js错误
答案 3 :(得分:0)
您可以使用jQuery的getScript()
函数动态获取(和执行)脚本。例如:
$.getScript("/js/myscript.js");
答案 4 :(得分:0)
由于你没有发布任何代码,我在这里猜测。
在这种情况下,您不必重新加载Javascript代码,但可以将数据存储在对象中。
请向我们展示一些JS代码,以便正确回答您的问题。
答案 5 :(得分:0)
通常,最好在此处设计协议。您应该有一个函数来解析正在加载的任何“列表”,一个函数用于解析URL哈希,一个函数用于加载新列表。您可以使用location.hash
获取网址哈希。
这是一个简单的例子,它希望列表是某种格式。因此它将基于协议,因为在您的Javascript中应该只需要加载一次,并且它应该期望某种特定的格式,它能够解析而不需要任何添加的依赖项。实际上需要依赖关系是可以的,但是如何/何时/何地应该在协议中工作。
<a class="listLoader" href="#list.php?list=1">List 1</a>
<a class="listLoader" href="#list.php?list=2">List 2</a>
<a class="listLoader" href="#list.php?list=3">List 3</a>
$('.listLoader').onclick(function() {
$.ajax({
'success': function () {
//Do what you gotta do with your lists
},
'url': location.hash.substring(1)
});
});