Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript加载内容,但仍保留指向特定内容页的唯一链接_Javascript_Jquery - Fatal编程技术网

使用Javascript加载内容,但仍保留指向特定内容页的唯一链接

使用Javascript加载内容,但仍保留指向特定内容页的唯一链接,javascript,jquery,Javascript,Jquery,我是一个网络新手,所以我将从表达我的问题开始,以防有比我试图实现它的方式更好的解决方案 我已经通过jQuery load()函数将我的站点内容更改为动态加载,因此不会在每次只有唯一文档内容更改时请求整个页面。但是,我希望网站仍然能够像用户通过URL访问文档的直接地址一样,将用户带到特定的内容(这样用户就可以链接到特定的内容页面) 我使用URL参数实现了这一点,例如“&cat=1&page=2”,并使用jQuery获得它们,并将正确的文件加载到#内容区域。因此,当用户单击导航中的链接时,它会加载相

我是一个网络新手,所以我将从表达我的问题开始,以防有比我试图实现它的方式更好的解决方案

我已经通过jQuery load()函数将我的站点内容更改为动态加载,因此不会在每次只有唯一文档内容更改时请求整个页面。但是,我希望网站仍然能够像用户通过URL访问文档的直接地址一样,将用户带到特定的内容(这样用户就可以链接到特定的内容页面)

我使用URL参数实现了这一点,例如“&cat=1&page=2”,并使用jQuery获得它们,并将正确的文件加载到#内容区域。因此,当用户单击导航中的链接时,它会加载相关内容并将页面的参数添加到URL中,如我给出的示例所示

这是我的代码:

//Adding location params to URL when navigation link is clicked
$("#innerNavbar > ul > li > a").on('click', function(){
    var cat = $(this).parent().parent().attr('id');
    var page = $(this).attr('name');
    var path = "categories/"+cat+"/"+page+".php";
    window.location = "#?cat="+cat+"&page="+page;
    $("#content").load(path);
});

//Get URL params and load correct page
var path = "categories/";
var cat = $.getUrlVar('cat'); //External code in getURLparams.js
var page = $.getUrlVar('page');
if (cat){
    if (page){
        path = "categories/"+cat+"/"+page+".php";
    } else {
        path = "categories/"+cat+"/index.php";
    }
} else {
    path = "categories/pages/index.php";
}
$("#content").load(path);
我遇到的具体代码是:

window.location = "#?cat="+cat+"&page="+page;
我正在使用这段代码将参数添加到URL中,而无需重新加载页面(带有#标记),但是,如果用户已经在URL中包含类似“#?cat=things&page=stuff”的页面上,则#将意味着不会重新加载页面

我可能把这件事复杂化了,但长话短说,有没有一种方法可以在URL中添加参数,而不必发送HTTP请求/重新加载页面,也不必在开始时使用#


同样,如果有一个完全解决一般问题的方法,我会欢迎它:)

您想要实现的更像是一个单页应用程序。有一些javascript库可以帮助您按照描述的方式构建应用程序。
看看或库。

如果您不想像@Alejandro González提到的那样开始使用单页应用程序框架,那么在窗口上检查hashchange事件并调用函数是最好的选择。比如:

function processParams() {
  var params = window.location.hash;
  // do something with params
}

$(window).on('hashchange', processParams);

可能重复您需要的声音。当URL$(窗口)中的标签更改时,您可以听到hashchange事件触发;但我强烈建议大家看看一些独特的页面应用程序JS库,比如