2012-02-15 225 views
0

声明:我对这个东西很新,所以请记住这一点。刷新JavaScript无刷新页面

你好,

进出口设置使用AJAX加载网页内容的网站,而不必离开页面。我有几个使用JavaScript加载列表信息的页面。

这里是链接设置如下:

#home 
#list.php?list=$list_id 

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

有无论如何我可以重新加载JavaScript代码来说明新变量而不必刷新页面?

谢谢!

+0

请向我们展示完整的代码,以便我们提供帮助。 “回去”(在浏览器中)是什么意思? – JMax 2012-02-15 08:27:00

回答

0

你不能将$ list_id存储在隐藏的输入字段中,然后在ajax调用后更新它吗?

例如

<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错误

4

我不明白你所面对的问题完全一样。 但如果你想重新加载脚本而无需刷新页面,你可以这样做:

var script = document.createElement("script"); 
script.type = "text/javascript"; 
script.src = "somefile.js"; 
document.getElementsByTagName("head")[0].appendChild(script); 

或使用jQuery.loadScript功能

+0

如何在页面内执行此脚本。例如。请记住,我在页面中使用JS,因为我在JS中使用了php变量。 – user1210772 2012-02-15 09:12:47

0

您可以使用jQuery的getScript()功能获得(和执行)的脚本动态。例如:

$.getScript("/js/myscript.js"); 
+0

该脚本不在外部文件中。我在php文件中使用

1

将HTML插入DOM脚本时执行。因此,当您通过AJAX加载一些HTML时,您可以执行包含的脚本。

0

通常,这里最好设计一个协议。您应该有一个函数来解析所有正在加载的“列表”,一个解析URL哈希的函数和一个函数来加载新列表。您可以通过location.hash获得URL哈希值。

下面是一个简单的例子,期望列表是一个特定的格式。所以它会是基于协议的,因为在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) 
    }); 
});