0

我正在尝试创建一个小型 Web 应用程序,在其中通过 Javascript 更新 URL 中的 2 个参数。

当我尝试"window.location.search = 'scene.html?name=' + person + '&scene=' + readCookie("scene");"

页面不断重新加载。每次“加载”页面时,我都试图将当前的“场景”参数分配给一个递增的值。

为什么我的页面总是用空值和未定义值重新加载?

4

3 回答 3

1

当您更新window.location浏览器时,浏览器将尝试请求您现在设置的新 URL。

如果你想在重新加载页面的情况下更新 URL,你有两个选择,要么只是更新hash(可以添加到 URL 末尾的部分,前面有一个#字符),而不是导致页面加载并且不会发送到服务器。或者您可以考虑使用HTML5 pushState API,该 API 仅受较新的浏览器支持,但提供了更大的灵活性。

于 2013-05-30T09:03:37.070 回答
0

如果你想更新两个参数,那么这就足够了:

window.location.search = '?name=' + person + '&scene=' + readCookie("scene");

也就是说,您不需要添加scene.html

"window.location.search" is the content of the current url after '?'.

因此,当您为其分配另一个值时,浏览器将对其进行更新并向服务器发送请求。

于 2013-05-30T09:05:13.793 回答
0

首先,我不是在追随你为什么想做这样的事情。

每当您更改 window.location 时,浏览器都应该去那里。这就是您获得重新加载效果的原因。您可以在不重新加载的情况下从该位置更改的唯一内容是哈希 (#) 部分。

您可以做的另一件事是使用 pushState操作浏览器的历史记录(只有最新版本支持)并在不重新加载的情况下更改 url(而且服务器也不会知道更改),例如:window.history.pushState({},"","scene.html?name=123");

另请注意,由于您更改了位置的搜索属性,因此不应包含路径名 (scene.html)。所以正确的方法是:window.location.search = '?name=' + person + '&scene=' + readCookie("scene");

于 2013-05-30T09:10:06.333 回答