zoukankan      html  css  js  c++  java
  • url查询参数解析

    url查询参数解析

    1.获取url的各部分值

    举例http://i.cnblogs.com/EditPosts.aspx?opt=1
    
    1、window.location.href(设置或获取整个 URL 为字符串)
    
    var test = window.location.href;
    alert(test);
    返回:http://i.cnblogs.com/EditPosts.aspx?opt=1
    
    2、window.location.protocol(设置或获取 URL 的协议部分)
    
    var test = window.location.protocol;
    alert(test);
    返回:http:
    
    3、window.location.host(设置或获取 URL 的主机部分)
    
    var test = window.location.host;
    alert(test);
    返回:i.cnblogs.com
    
    4、window.location.port(设置或获取与 URL 关联的端口号码)
    
    var test = window.location.port;
    alert(test);
    返回:空字符(如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符)
    
    5、window.location.pathname(设置或获取与 URL 的路径部分(就是文件地址))
    var test = window.location.pathname;
    alert(test);
    返回:/EditPosts.aspx
    
    6、window.location.search(设置或获取 href 属性中跟在问号后面的部分)
    
    var test = window.location.search;
    alert(test);
    返回:?opt=1
    
    PS:获得查询(参数)部分,除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值。
    
    7、window.location.hash(设置或获取 href 属性中在井号“#”后面的分段)
    
    var test = window.location.hash;
    alert(test);
    返回:空字符(因为url中没有)

    2.将url查询参数通过正则表达式解析成数据字典

    function getQueryObject(url) {
            url = url == null ? window.location.href : url;
            var search = url.substring(url.lastIndexOf("?") + 1);
            var obj = {};
            var reg = /([^?&=]+)=([^?&=]*)/g;
            // [^?&=]+表示:除了?、&、=之外的一到多个字符
            // [^?&=]*表示:除了?、&、=之外的0到多个字符(任意多个)
            search.replace(reg, function (rs, $1, $2) {
                var name = decodeURIComponent($1);
                var val = decodeURIComponent($2);
                val = String(val);
                obj[name] = val;
                return rs;
            });
            return obj;
        }
        console.log(getQueryObject('https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91'));
        // Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}

    3.将url查询参数手动解析成数据字典

    function getQueryStringArgs(url){
            url = url == null ? window.location.href : url;
            var qs = url.substring(url.lastIndexOf("?") + 1);
            var args = {};
            var items = qs.length > 0 ? qs.split('&') : [];
            var item = null;
            var name = null;
            var value = null;
            for(var i=0; i<items.length; i++){
                item = items[i].split("=");
                //用decodeURIComponent()分别解码name 和value(因为查询字符串应该是被编码过的)。
                name = decodeURIComponent(item[0]);
                value = decodeURIComponent(item[1]);
    
                if(name.length){
                    args[name] = value;
                }
            }
    
            return args;
        }
    console.log(getQueryStringArgs('https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91'));
        // Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}
  • 相关阅读:
    PHP 速度测试函数
    ajax的简单应用之快速入门
    PHP漏洞详解
    jQuery Ajax 实例 全解析
    2007年最后的一天
    近来心情格外的郁闷
    使用 Ajax 实现 lightbox
    GridView删除,编辑应用
    完美的wsus客户端注册表文件
    VISTA桌面显示Internet Explorer
  • 原文地址:https://www.cnblogs.com/s313139232/p/9626088.html
Copyright © 2011-2022 走看看