Javascript:window.location.search不更新?
作者:互联网
如果用户在搜索面板(在页面上)输入URL,则需要更新URL中的搜索(查询)参数.我正在尝试:
$( document ).ready(function() {
if ($('.o_website_license_search_panel').length) {
$('.o_website_license_search_panel .o_search_submit').click(function () {
var search = $.deparam(window.location.search.substring(1));
console.log('before update')
console.log(window.location.search)
search.license_key = $(".o_website_license_search_panel input[name='license_key']").val();
console.log('new obj ', search, $.param(search))
window.location.search = $.param(search);
console.log('after update')
console.log(window.location.search)
});
}
});
我得到以下输出:
before update
web.assets_frontend.js:1254 ?license_state=cancel
web.assets_frontend.js:1255 new obj {license_state: "cancel", license_key: "test2"} license_state=cancel&license_key=test2
web.assets_frontend.js:1256 after update
web.assets_frontend.js:1257 ?license_state=cancel
如您所见,window.location.search保持不变.我有想念的东西吗,还是打算这样?
解决方法:
设置搜索(或哈希以外的其他任何属性)会导致页面重新加载.该属性将继续具有其先前的值,直到发生这种情况为止,这就是为什么您在日志记录语句中看到该先前的值的原因.记录旧值之后,除非页面上的代码阻止了此情况的发生,否则该页面将重新加载新的查询字符串,此时location.search会显示新字符串.
更多:window.location
‘s properties on MDN
标签:window-location,javascript,jquery 来源: https://codeday.me/bug/20191110/2013679.html