querystring (查询字符串)

一、querystring.stringify()

3个参数:

1. 第一个参数,解析后的 url 对象

querystring.stringify({name:'cg',course:['jade','node'],from:'zh'})
  //运行结果
'name=cg&course=jade&course=node&from=zh'

2. 第二个参数,query参数之间的链接符号,默认是 &

querystring.stringify({name:'cg',course:['jade','node'],from:'zh'},'$')
  //运行结果
'name=cg$course=jade$course=node$from=zh'

3. 第三个参数,key和value之间的符号,默认是 =

querystring.stringify({name:'cg',course:['jade','node'],from:'zh'}, '$', ':')
  //运行结果
'name:cg$course:jade$course:node$from:zh'

 

二、querystring.parse()

接收3个参数

1. 第一个参数,querystring 字符串

querystring.parse('name=cg&course=jade&course=node&from=zh')
  // 运行后
{
  name: 'cg',
  course: ['jade', 'node'],
  from: 'zh'
}

2. 第二个参数,query参数之间的分隔符号,如果不是默认的分隔符号,必须要传,否则解析不了

querystring.parse('name=cg$course=jade$course=node$from=zh', '$')
  // 运行后
{
  name: 'cg',
  course: ['jade', 'node'],
  from: 'zh'
}

3. 第三个参数,key和value之间的符号,默认是=,如果不是默认的,就必须要传,否则解析不了

querystring.parse('name:cg$course:jade$course:node$from:zh', '$', ':')
  // 运行后
{
  name: 'cg',
  course: ['jade', 'node'],
  from: 'zh'
}

querystring.escape()

字符串的转译

querystring.escape('陈功')
'%E9%99%88%E5%8A%9F'

querystring.unescape()

字符串的反转译

querystring.unescape('%E9%99%88%E5%8A%9F')
'陈功'

 


三、js获取URL中参数值(querystring),4种方法?

方法一:正则法

function getQueryString(name) {
            var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
            var r = window.location.search.substr(1).match(reg);
            if (r != null) {
                return unescape(r[2]);
            }
            return null;
        }

        // 这样调用:
        alert(GetQueryString("参数名1"));
        alert(GetQueryString("参数名2"));
        alert(GetQueryString("参数名3"));

方法二:split拆分法

function GetRequest() {
            var url = location.search; //获取url中"?"符后的字串
            var theRequest = new Object();
            if (url.indexOf("?") != -1) {
                var str = url.substr(1);
                strs = str.split("&");
                for (var i = 0; i < strs.length; i++) {
                    theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
                }
            }
            return theRequest;
        }
        var Request = new Object();
        Request = GetRequest();

// var 参数1,参数2,参数3,参数N;

// 参数1 = Request['参数1'];

// 参数2 = Request['参数2'];

// 参数3 = Request['参数3'];

// 参数N = Request['参数N'];

 

方法三:又见正则

  通过JS获取url参数,这个经常用到。比如说一个url:http://wwww.jb51.net/?q=js,我们想得到参数q的值,那可以通过以下函数调用即可。

function GetQueryString(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
            var r = window.location.search.substr(1).match(reg);  //获取url中"?"符后的字符串并正则匹配
            var context = "";
            if (r != null)
                context = r[2];
                
            reg = null;
            r = null;
            return context == null || context == "" || context == "undefined" ? "" : context;
        }
        alert(GetQueryString("q"));

 

方法四:单个参数的获取方法

function GetRequest() {
            var url = location.search; //获取url中"?"符后的字串
            if (url.indexOf("?") != -1) {    //判断是否有参数
                var str = url.substr(1); //从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串
                strs = str.split("=");   //用等号进行分隔 (因为知道只有一个参数 所以直接用等号进分隔 如果有多个参数 要用&号分隔 再用等号进行分隔)
                alert(strs[1]);          //直接弹出第一个参数 (如果有多个参数 还要进行循环的)
            }
        }

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值