我正在尝试创建一个小型网络应用,我通过Javascript在网址中更新2个参数。
当我尝试"window.location.search = 'scene.html?name=' + person + '&scene=' + readCookie("scene");"
页面不断重新加载。我正在尝试分配当前的场景'每当页面被加载时,参数就会增加一个值。
为什么我的页面会永久地重新加载null和未定义的值?
答案 0 :(得分:1)
当您更新window.location
时,浏览器将尝试请求您现在将其设置为的新网址。
如果您想更新网址而不正在重新加载的网页,您有两个选项,或者只更新hash
(这是可以添加到URL的结尾,并以#
字符开头,不会导致页面加载,也不会发送到服务器。或者你可以考虑使用HTML5 pushState API,它只有较新的浏览器支持,但提供了更大的灵活性。
答案 1 :(得分:0)
如果您想更新两个参数,那么这就足够了:
window.location.search = '?name=' + person + '&scene=' + readCookie("scene");
也就是说,您不需要添加scene.html
"window.location.search" is the content of the current url after '?'.
因此,当您为其分配另一个值时,浏览器将更新它并将请求发送到服务器。
答案 2 :(得分:0)
首先,我不理解你为什么要这样做。
每当你更改window.location时,浏览器都应该去那里。这就是你获得重载效果的原因。你可以从没有重新加载的位置改变的唯一方法就是哈希(#)部分。
你可以做的另一件事是使用pushState的浏览器的manipulate the history(只有最新版本支持)并更改url而不重新加载(并且服务器也不会知道更改),例如: window.history.pushState({},"","scene.html?name=123");
另请注意,由于您更改了该位置的搜索属性,因此不应包含路径名(scene.html)。所以正确的方法是:window.location.search = '?name=' + person + '&scene=' + readCookie("scene");