【问题标题】:Reload entire page with AJAX request and changed GET parameters使用 AJAX 请求重新加载整个页面并更改 GET 参数
【发布时间】:2012-02-20 09:13:13
【问题描述】:

我正在尝试使用 jQuery AJAX 请求(向负载提供一个简单的 GET 参数)重新加载整个页面,大致以这种方式。

$.ajax({
    url: "site.php?param="+new_param,
    cache: false,
    success: function(content) {
        $("html").html(content);
    }
});

如您所见,这将级联 <html> 块,并且样式会以某种方式被破坏(背景突然变成白色等等)。

$(document).html(content); 之类的技巧也不起作用。

很遗憾,我还没有找到任何解决此问题的方法。

【问题讨论】:

  • 你为什么要使用 AJAX 重新加载整个页面 - 似乎毫无意义......只需更改 window.location 并正常导航!或者只是拉入所需的内容

标签: javascript jquery ajax parameters get


【解决方案1】:

如果您没有重新加载 head 内容(加载新的 javascript 或 css),并且我认为您没有理由这样做,您应该尝试将内容加载到内容本身,即。 <body>.

$("body").html(content);

编辑

为了实现我认为您正在尝试的目标,您可以查看https://github.com/defunkt/jquery-pjax

【讨论】:

  • 你是对的,当然。我只是认为有一种快速、简单的方法。
  • 谢谢!这看起来像我要找的东西。
  • 我用过这个,效果很好。 $("#page-content-wrapper").load('/searches?distance='+ distance + '&category=' + category + "#page-content-wrapper");
【解决方案2】:

加载一个完整的 HTML 页面的问题在于,您只能获取 HTML 代码,但没有解释 JavaScript,并且 CSS 文件的路径会变得混乱。 想象一下,如果您愿意:您在 index.php 文件中,并且 CSS 文件位于同一目录中。现在,如果您使用 AJAX 加载不同的 HTML 文件,并在 div 中输出该代码,那么该文件可能指向“../css/random_dir/style.css”文件。现在,您的 index.php 文件中的路径并不好,这就是样式混乱的原因。 您的新代码希望在未加载(也不会加载)的 css 文件中找到“背景”。

【讨论】: