精华内容
下载资源
问答
  • 本篇文章是对JS修改URL参数的实现代码进行了详细的分析介绍,需要的朋友参考下
  • JS获取和修改url参数

    2021-06-21 11:08:33
    # JS获取和修改url参数 # 获取url参数 /** * 获取url里的参数 * @param arg 参数名 * @returns */ function getURLString(arg) { var reg = new RegExp("(^|&)" + arg + "=([^&]*)(&|$)", "i"); ...

    /**
     * 获取url里的参数
     * @param arg 参数名
     * @returns
     */
    function getURLString(arg) {
        var reg = new RegExp("(^|&)" + arg + "=([^&]*)(&|$)", "i");
        var r = window.location.search.substr(1).match(reg);
        if (r != null)
            return unescape(r[2]);
        return null;
    }
    

    /**
     * url地址修改
     * @param url 待修改url
     * @param arg 修改的参数名
     * @param arg_val 修改的具体值
     * @returns {String}
     */
    function changeURLArg(url, arg, arg_val) {
        var pattern = arg + '=([^&]*)';
        var replaceText = arg + '=' + arg_val;
        if (url.match(pattern)) {
            var tmp = '/(' + arg + '=)([^&]*)/gi';
            tmp = url.replace(eval(tmp), replaceText);
            return tmp;
        } else {
            if (url.match('[\?]')) {
                return url + '&' + replaceText;
            } else {
                return url + '?' + replaceText;
            }
        }
    }
    

    https://www.cnblogs.com/wuting/p/8946927.html (opens new window)

    比如,UTF-8 的操作系统上,http://www.example.com/q=春节这个 URL 之中,汉字“春节”不是 URL 的合法字符,所以被浏览器自动转成http://www.example.com/q=%E6%98%A5%E8%8A%82。其中,“春”转成了%E6%98%A5,“节”转成了%E8%8A%82。这是因为“春”和“节”的 UTF-8 编码分别是E6 98 A5E8 8A 82,将每个字节前面加上百分号,就构成了 URL 编码。

    JavaScript 提供四个 URL 的编码/解码方法。

    • encodeURI()
    • encodeURIComponent()
    • decodeURI()
    • decodeURIComponent()

    查看文档 (opens new window)

    展开全文
  • 都是抄来的知识汇总 ...*获取URL参数 */ function GetQueryString(name) {  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");  var r = window.location.search.substr(1).match(reg);  

    都是抄来的知识汇总

    1、读取URL中的参数值

    /*
    *获取URL参数
    */
    function GetQueryString(name)
    {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) {
            return unescape(r[2]);
        }
        return null;
    };

    调用方法:

    var nameVal=GetQueryString("URL上的参数名");

    举例:

    浏览器地址连上的地址为:

    http://www.aazj.cn/pc/meeting/card.html?skinColor=30&gid=-1&userId=566&modid=1133&puid=9

    那么

    var userIdVal=GetQueryString("userId")   //值就等于566

    2、修改URL参数

    //替换指定传入参数的值,paramName为参数,replaceWith为新值
    function replaceParamVal(paramName,replaceWith) {
        var oUrl = this.location.href.toString();
        var re=eval('/('+ paramName+'=)([^&]*)/gi');
        var nUrl = oUrl.replace(re,paramName+'='+replaceWith);
        this.location = nUrl;
    window.location.href=nUrl
    }

    调用举例

    浏览器地址连上的地址为:

    http://www.aazj.cn/pc/meeting/card.html?skinColor=30&gid=-1&userId=566&modid=1133&puid=9

    加入希望修改userId的值为333,那么

    replaceParamVal("userId","333")

    URL就会变成

    http://www.aazj.cn/pc/meeting/card.html?skinColor=30&gid=-1&userId=333&modid=1133&puid=9

    3、动态修改URL

    var newUrl="新的Url";

    var stateObject = 0;
    var title="0"
    history.replaceState(stateObject,title,newUrl);

    一般这样基本可用了,更多知识可以百度replaceState


    展开全文
  • function getURL(){ var args = {}; var query = location.search.substring(1); //获得了当前链接的中?号后的参数 var pairs = query.split("&"); for(var i = 0; i < pairs.length; i++) { var pos = ...

    function getURL(){
    var args = {};
    var query = location.search.substring(1);  //获得了当前链接的中?号后的参数
    var pairs = query.split("&");
    for(var i = 0; i < pairs.length; i++) {
    var pos = pairs[i].indexOf('=');
    if (pos == -1) continue;
    var argname = pairs[i].substring(0,pos);
    var value = pairs[i].substring(pos+1);
    value = decodeURIComponent(value);
    args[argname] = value;
    }
    return args;
    }

     

    function getNewHref(index, value) {
    var gets = getURL(), url = '?';

    $.each(gets, function(key, val) {
    if (index === key)
    url += key + '=' + value + '&';
    else
    url += key + '=' + val + '&';
    })

    if (url === '?') {
    return location.href + '?' + index + '=' + value;
    }
    else if (typeof gets[index] === 'undefined') {
    return location.href + '&' + index + '=' + value;
    }
    else {
    return location.href.split('?')[0] + url.substr(0, url.length - 1);
    }
    }

     

    function getDeleteHref(index1, index2) {
    var gets = getURL(), url = '?';

    $.each(gets, function(key, val) {
    if (index1 !== key && index2 !== key)
    url += key + '=' + val + '&';
    })

    return location.href.split('?')[0] + url.substr(0, url.length - 1);
    }

    转载于:https://www.cnblogs.com/hasayaki/p/3963824.html

    展开全文
  • 02-修改url参数【牛客网-在线编程-前端篇】题目描述参考答案参考的链接(部分)两种思路1.传统split方法2.正则表达式涉及知识点1.split的用法(参考MDN网站)2.JavaScript中forEach() 方法3.concat方法:合并两个...

    题目描述

    获取 url 中的参数

    1. 指定参数名称,返回该参数的值 或者 空字符串
    2. 不指定参数名称,返回全部的参数对象 或者 {}
    3. 如果存在多个同名参数,则返回数组

    参考答案

    1.传统split方法

    function getUrlParam(sUrl, sKey) {
      let result = {};
      let urlarr = sUrl.split('?')[1].split('#')[0].split('&');
      urlarr.forEach(item => {
        let [key, val] = item.split('=');
        if (result[key]) { //key有多个value,则转为数组
          /*使用数组的concat方法*/
          //result[key] = [].concat(result[key],val);
          
          /*使用展开语法...(更简便)*/
          result[key] = [...result[key], val];
          
        } else { //key只有一个value
          result[key] = val;
        }
      });
    
    
      /*
      //运行速度较慢
      if(sKey){
          if(result[sKey]) return result[sKey];
          else return '';
      }
      else return result;
       */
    
      /* sKey为空直接返回对象 */
      if (sKey === undefined) return result;
      else {
        if (result[sKey] === undefined) return '';
        else return result[sKey];
      }
    
    
    }
    

    参考的链接(部分)

    获取url参数 牛客
    ——
    获取url参数
    ——
    MND:String.prototype.concat()
    MND:Array.prototype.concat()
    ——
    js 中 … 的用法
    ——
    MDN:展开语法
    ——
    菜鸟教程:forEach()
    ——
    MDN:全等运算符===
    ——
    MDN:正则表达式

    两种思路

    1.传统split方法

    • 解法简介
    1. 使用split方法分割字符串得到参数序列数组[ ‘key=1’, ‘key=2’, ‘key=3’, ‘test=4’ ]
    2. 设置一个对象,以键值对的方式存数据,对第一次出现的key,赋值对应value;根据题目描述第三点,对重复出现的key,将数据转换为数组的形式
    3. 根据题目描述第一、二点,判断是否含有sKey,没有则输出整个对象,有则判断res[sKey],为空则输出空字符串’’,不为空输出res[sKey]

    2.正则表达式

    获取url参数 牛客
    需要补充关于replace的用法
    添加链接描述

    涉及知识点

    1.split的用法(参考MDN网站)

    • 参数
    1. separator

      指定表示每个拆分应发生的点的字符串。
      separator 可以是一个字符串或正则表达式。
      如果纯文本分隔符包含多个字符,则必须找到整个字符串来表示分割点。
      如果在str中省略或不出现分隔符,则返回的数组包含一个由整个字符串组成的元素。
      如果分隔符为空字符串,则将str原字符串中每个字符的数组形式返回。

    2. limit
      一个整数,限定返回的分割片段数量。
      当提供此参数时,split 方法会在指定分隔符的每次出现时分割该字符串,但在限制条目已放入数组时停止。
      如果在达到指定限制之前达到字符串的末尾,它可能仍然包含少于限制的条目。
      新数组中不返回剩下的文本。

    • 返回值

    返回源字符串以分隔符出现位置分隔而成的一个 Array

    • 描述
    1. 找到分隔符后,将其从字符串中删除,并将子字符串的数组返回。
    2. 如果没有找到或者省略了分隔符,则该数组包含一个由整个字符串组成的元素。
    3. 如果分隔符为空字符串(即’’),则将str转换为字符数组。
    4. 如果分隔符出现在字符串的开始或结尾,或两者都有,则得到的是分别以空字符串开头,结尾或两者开始和结束。
    5. 因此,如果字符串仅由一个分隔符实例组成,则该数组由两个空字符串组成。
    6. 如果分隔符是包含捕获括号的正则表达式,则每次分隔符匹配时,捕获括号的结果(包括任何未定义的结果)将被拼接到输出数组中。但是,并不是所有浏览器都支持此功能。

    2.JavaScript中forEach() 方法

    forEach() 方法对数组的每个元素执行一次给定的函数。
    菜鸟教程:forEach()
    参数说明:
    在这里插入图片描述

    3.concat方法:合并两个数组

    参考:
    MND:String.prototype.concat()
    MND:Array.prototype.concat()

    • String.prototype.concat():

    简介:
    方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。
    描述:
    concat 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回。 concat 方法并不影响原字符串。
    提示:
    如果参数不是字符串类型,它们在连接之前将会被转换成字符串。
    性能:
    强烈建议使用赋值操作符(+, +=)代替 concat 方法。

    • Array.prototype.concat():

    描述:
    concat方法创建一个新的数组,它由被调用的对象中的元素组成,每个参数的顺序依次是该参数的元素(如果参数是数组)或参数本身(如果参数不是数组)。它不会递归到嵌套数组参数中。

    concat方法不会改变this或任何作为参数提供的数组,而是返回一个浅拷贝,它包含与原始数组相结合的相同元素的副本。
    原始数组的元素将复制到新数组中,如下所示:

    1.对象引用(而不是实际对象):concat将对象引用复制到新数组中。 原始数组和新数组都引用相同的对象。 也就是说,如果引用的对象被修改,则更改对于新数组和原始数组都是可见的。 这包括也是数组的数组参数的元素。
    2.数据类型如字符串,数字和布尔(不是String,Number 和 Boolean 对象):concat将字符串和数字的值复制到新数组中。

    注意:
    数组/值在连接时保持不变。此外,对于新数组的任何操作(仅当元素不是对象引用时)都不会对原始数组产生影响,反之亦然。

    4.es6中,展开语法…的用法

    参考:
    js 中 … 的用法
    MDN:展开语法

    • 函数调用时,使用展开语法传递参数列表
    • 构造字面量数组时(拷贝数组/合并数组),使用展开语法
    • 构造字面量对象时,使用展开语法
    • 提示: 实际上,展开语法和 Object.assign() 行为一致, 执行的都是浅拷贝(只遍历一层)

    5.全等运算符===

    参考:
    MDN:全等运算符===

    6.正则表达式

    参考:
    MDN:正则表达式

    7.String.prototype.replace()【结合正则表达式使用】

    参考:
    MDN:String.prototype.replace()
    replace() 方法返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。如果pattern是字符串,则仅替换第一个匹配项。

    原字符串不会改变。

    展开全文
  • js修改URL参数

    千次阅读 2018-05-07 13:46:01
    par是参数名,par_value是参数要更改的值,调用结果如下: var url = window.location.href; changeURLPar(url, ‘id’, 99); // http://www.csdn.com/?id=99&ttt=3 changeURLPar(url, ‘haha’, 33); /...
  • 由于很多请求参数都是通过URL上传参数,导致用户可以通过修改URL参数查看到自己无权查看的数据。现已有解决方案,在每个请求上用公钥加密所有参数,然后后台解密,这样就能避免用户私自修改参数访问数据。 问题...
  • 先说一下需求: 我们负责的网站被检测出来了xss漏洞,例如用户输入 ...<img%20src=1%20onerror=alert(1)><aaa="bad ...于是就想到了利用js动态修改参数后再传到后台,这样既解决了前台弹出...
  • JAVA修改URL参数

    千次阅读 2017-05-04 13:27:44
    http://asflex.iteye.com/blog/2002047
  • vue无刷新修改url参数

    千次阅读 2019-04-12 10:13:09
    import merge from 'webpack-merge';...修改原有参数 this.$router.push({ query:merge(this.$route.query,{'maxPrice':'630'}) }) 新增一个参数: this.$router.push({ query:merge(this.$route.query,{'addPa...
  • 1.使用 window.location.search 来取得后面的参数// param参数的名function getParameter(param){var query = window.location.search;var iLen = param.length;var iStart = query.indexOf(param);if (iStart == -...
  • JS 修改URL参数

    千次阅读 2013-03-08 15:48:13
    function changeURLPar(url, ref, value) { var str = ""; if (url.indexOf('?') != -1) str = url.substr(url.indexOf('?') + 1); else return url + "?" + ref + "=" + value; va
  • 因为想要实现 tab切换 添加参数修改参数值,一开始的思路是: /* * url 目标url * arg 需要替换的参数名称 * arg_val 替换后的参数的值 * return url 参数替换后的url */ function ...
  • // 添加 或者 修改 url参数的值 function UpdateUrlParam(name, val) { var thisURL = "{$query}"; if (thisURL.indexOf(name+'=') > 0) { var v = getUrlParam(name); ...
  • js添加、修改url参数

    千次阅读 2015-12-28 08:56:24
    //设置url参数值 function setParam(param, value) { var query = location.search.substring(1); var p = new RegExp("(^|)" + param + "=([^&]*)(|$)"); if (p.test(query)) {
  • JS添加修改URL参数

    2013-08-22 18:28:00
    function ChangeParam(name, value) {  var url = window.location.href;  var newUrl = "";  var reg = new RegExp("(^|)" + name + "=([^&]*)(|$)");  var tmp = name + "=" + va
  • Javascript 修改 URL 参数

    千次阅读 2010-05-22 16:57:00
    String.prototype.changeQuery = function(name,value) { var reg = new RegExp("(^|)"+ name ... alert("old url is -- "+href); href = href.changeQuery("cult","US"); alert("new url is -- "+href);  
  • 谷歌暗藏实时搜索:修改URL参数即可实现http://www.sina.com.cn 2009年09月14日 10:33 新浪科技 导语:国外科技博客今天撰文称,只需在谷歌搜索URL中加入不同的参数,即可对网络过去1分钟、甚至1秒钟的内容进行...
  • 最近,同事埋头于对多参url中的每个参数进行模糊测试,达到测试函数能否进行的结果。在写脚本的时候,我开始给他的建议是,将完整的url进行切割,以针对每个list元素进行替换的思路完成脚本,翻了一下之前的脚本,...
  • js 设置与修改url参数的实现代码

    千次阅读 2013-07-08 11:37:37
    使用js设置url参数。 代码: // 获取地址栏的参数数组 function getUrlParams() { var search = window.location.search; // 写入数据字典 var tmparray = search.substr(1, search.length).split("&"); ...
  • python修改url参数

    千次阅读 2019-09-02 14:36:25
    #!/usr/bin/env python # encoding: utf-8 """ @author: wanwei @license: (C) Copyright 2013-2017, Node Supply Chain Manager Corporation ...@contact: @software: pycharm @file: parse_url.py @time: 20...
  • 现在做网页,经常会碰到处理地址栏参数的问题,因此,就专门做了一个修改地址栏参数的方法,需要了解的朋友可以参考下
  • Js读取url中的参数、修改url的参数 1、读取url的某个参数值: 1 2 3 4 5 6 7 8 9 10 11 12 /* *获取URL参数 */ functionGetQueryString...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,448
精华内容 1,779
关键字:

修改url参数