【发布时间】:2020-02-22 12:56:26
【问题描述】:
我正在尝试将浏览器重定向到当前页面,但是当用户从下拉列表中选择和选项时使用新参数。
从调试中我可以看到我要访问的 url 与我想要的完全一样,但是当我执行 window.location.href(我也尝试过 replace() 等)时,它只是附加了新参数到当前 url 而不是替换它。
我已经尝试了两天来解决这个问题,这让我发疯了,我已经尝试了我在网上找到的所有解决方案,但到目前为止没有任何效果。希望有人可以在这里帮助我。
我试图实现的示例地址,脚本创建的是'http://localhost/wordpress/showroom/?page=2&orderby=price&order=asc'
但我得到的是'http://localhost/wordpress/showroom/?page=2&orderby=price&order=asc&orderby=price&order=dsc'
事件虽然脚本产生'http://localhost/wordpress/showroom/?page=2&orderby=price&order=dsc'
这是我的选择
<select id="post-sort">
<option value="orderby=price&order=desc">Price - Highest First</option>
<option value="orderby=price&order=asc">Price - Lowest First</option>
<option value="orderby=year&order=desc">Age - Newest First</option>
<option value="orderby=year&order=asc">Age - Lowest First</option>
</select>
这是我的javascript函数
$(document).ready(function () {
$("#post-sort").on('change', function (event) {
var sortValue = this.value;
var url = JSON.parse(JSON.stringify(window.location.href));
//get param string
var urlParamsSection = url.split('?')[1];
//If has params
if (urlParamsSection) {
//Split params
var urlParams = urlParamsSection.split('&');
//Loop all params
urlParams.forEach(urlParam => {
//if param contains order var => remove
if (urlParam.indexOf('order') > -1) {
url.replace('&' + urlParam, '');
}
});
url += '&' + sortValue;
} else {
url += '?' + sortValue;
}
console.log(url);
window.location.href = url;
return false;
});
});
【问题讨论】:
-
这里登出的网址是什么?初始网址也是什么?
-
我认为 window.location = url 应该可以解决问题
-
初始 url -> 'localhost/wordpress/showroom/…' 记录的 url -> 'localhost/wordpress/showroom/…' 结果 url(浏览器指向的) -> 'localhost/wordpress/showroom/…'
标签: javascript jquery wordpress