【问题标题】:Change URL parameter onpage load在页面加载时更改 URL 参数
【发布时间】:2015-01-29 11:54:59
【问题描述】:

我想将 URL 中的第三个参数更改为动态变量。

例如。如果我的网址是http://example.com/A/B/Fixed_var_C,那么我希望将其更改为http://example.com/A/B/Dynamic_C

如何在页面加载时通过 JQuery 或 javascript 实现它?

我尝试了一些方法,但没有成功。以下是其中一种方法:

window.history.pushState("object or string", "Title", "/new-url");

【问题讨论】:

  • 用户点击刷新会发生什么?
  • 如果网址更改过一次,那真的重要吗?
  • 该方法应该可以工作,depending on your browser。
  • 这很重要,因为新的服务器请求将发送到http://example.com/A/B/Dynamic_C
  • 但 Dynamic_C 仅用于展示目的。我没有根据这个参数获取任何东西

标签: javascript jquery


【解决方案1】:
url = "http://example.com/A/B/Fixed_var_C";
url = url.substr(0,url.lastIndexOf('/'))+"/Dynamic_C";
alert(url);

Demo

【讨论】:

  • 这看起来不错,但我如何在地址栏中传递它而不重新加载页面
  • 但它会重新加载页面
  • reload the page then 是什么意思?
  • @Sadikhasan 我想他想在不回发的情况下更改网址
  • 是的@ArunprasanthKV ...我不想重新加载页面,并且 URL 应在不发出其他请求的情况下更新。
【解决方案2】:

试试下面的功能:

function UpdateQueryString(key, value, url) {
    if (!url) url = window.location.href;
    var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"),
        hash;

    if (re.test(url)) {
        if (typeof value !== 'undefined' && value !== null)
            return url.replace(re, '$1' + key + "=" + value + '$2$3');
        else {
            hash = url.split('#');
            url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
            if (typeof hash[1] !== 'undefined' && hash[1] !== null) 
                url += '#' + hash[1];
            return url;
        }
    }
    else {
        if (typeof value !== 'undefined' && value !== null) {
            var separator = url.indexOf('?') !== -1 ? '&' : '?';
            hash = url.split('#');
            url = hash[0] + separator + key + '=' + value;
            if (typeof hash[1] !== 'undefined' && hash[1] !== null) 
                url += '#' + hash[1];
            return url;
        }
        else
            return url;
    }
}

【讨论】:

  • 在这个函数中他在哪里传值?
  • 我没有得到你的问题。该函数显然接受 3 个参数 - key、value 和 url。
  • 他已经有一个像 example.com/A/B/Fixed_var_C 这样的 url,他想像 example.com/A/B/Dynamic_C 一样改变它,所有数据都应该作为 url、value 和 key 在你的函数中传递
猜你喜欢
  • 1970-01-01
  • 2022-08-10
  • 2013-04-10
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-29
  • 2017-01-08
相关资源
最近更新 更多