Javascript:window.location.search 不更新?

标签 javascript jquery window.location

如果用户在搜索面板(页面上)中输入这些参数,我需要更新 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 保持不变。有没有我想念的东西,或者它是这样设计的?..

最佳答案

设置search(或location 上除hash 之外的任何其他属性)会导致页面重新加载。在发生这种情况之前,该属性将继续具有其先前的值,这就是您在日志记录语句中看到先前值的原因。 旧值被记录后,除非您页面上的代码阻止它发生,否则页面将使用新的查询字符串重新加载,此时 location.search 将显示新字符串。

更多:window.location's properties on MDN

关于Javascript:window.location.search 不更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239662/

相关文章:

javascript - `使用文本区域中的字符串动态填充下拉菜单

javascript - 如何根据参数字符串定义返回类型?流式javascript

javascript - 收集 javascript 数组中 <div> 标签下的类名

javascript - window.location = #anchor 在 IE 中不起作用

javascript - 在什么情况下 window.location.search 是未定义的?

javascript - 如何修复具有相同高度的两列具有不同的大小

javascript - 方案命名空间使用约定。与Javascript相比

jQuery .slideUp() 卡住

jquery验证,使字段有条件必需?

Jquery 在提交问题时输入 url 值