重新加载javascript没有刷新页面

时间:2012-02-15 08:21:06

标签: javascript jquery ajax refresh reload

免责声明:我对这些内容很陌生,所以请记住这一点。

您好,

我使用AJAX设置网站以加载页面内容而无需离开页面。我有几个页面使用javascript来加载列表信息。

以下是链接设置:

#home
#list.php?list=$list_id

我有一个名为$ list_id的变量,并使用一些javascript来加载列表。我面临的问题是,如果我加载一个列表(让我们说ID为1的列表)然后返回并加载另一个列表(让我们说ID为2的列表)javascript没有重新加载到新列表ID的帐户。

无论如何我可以重新加载javascript代码来解释新变量而无需刷新页面吗?

谢谢!

6 个答案:

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