中国最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2

json教程

  • 关于 JSON
  • JSON 教程

    json格式

    JSON解析

    JSON遍历

    JSON调用

    JSON转换

    JSON获取

    JSON字符串

    JSON数组

    一个JavaScript函数把URL参数解析成Json对象

    阅读 (2693)

    问题:请编写一个JavaScript函数parseQueryString,它的用途是把URL参数解析为一个对象。
    eg:var obj=parseQueryString(url);

    创建对象的三种形式:


    一:

    var Person=new Object();
    Person.name="Sun";
    Person.age=24;
    


    二:

    var Person=new Object();
    Person["name"]="Sun";
    Person["age"]=24;
    


    三:

    对象字面量表达式

    var Person={
    name: "Sun",
    age: 24
    }
    


    PS:
    1、在这个例子中,比较适合使用第二种形式,向obj中添加元素
    2、split("&") , 如果url只有一个参数的时候,没有“&”的时候,也不会报错,只会返回array[0]

    function parseQueryString(url) {
        var obj = {};
        var keyvalue = [];
        var key = "",
            value = "";
        var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
        for (var i in paraString) {
            keyvalue = paraString[i].split("=");
            key = keyvalue[0];
            value = keyvalue[1];
            obj[key] = value;
        }
        return obj;
    }
    

    以下介绍了JS根据key值获取URL中的参数值及把URL的参数转换成json对象,js通过两种方式获取url传递参数,代码

    示例一:

    //把url的参数部分转化成json对象 

     parseQueryString: function(url) {
         var reg_url = /^[^/?]+/ ? ([/w/W] + ) $ / ,
             reg_para = /([^&=]+)=([/w/W]*?)(&|$|#)/g,
             arr_url = reg_url.exec(url),
             ret = {};
         if (arr_url && arr_url[1]) {
             var str_para = arr_url[1],
                 result;
             while ((result = reg_para.exec(str_para)) != null) {
                 ret[result[1]] = result[2];
             }
         }
         return ret;
     }
    

    // 通过key获取url中的参数值

     getQueryString: function(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;
    }

    示例二:

    js通过两种方法获取url传递参数:

    js获取url传递参数方法一:

     这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET
    函数:

    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]] = (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''];

    以此获取url串中所带的同名参数

    js获取url传递参数方法二 正则分析法:

    function GetQueryString(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) return (r[2]);
        return null;
    }
    alert(GetQueryString("参数名1"));
    alert(GetQueryString("参数名2"));
    alert(GetQueryString("参数名3"));
    

    其他参数获取介绍:

    //设置或获取对象指定的文件名或路径。

    alert(window.location.pathname);

    //设置或获取整个 URL 为字符串。

    alert(window.location.href);

    //设置或获取与 URL 关联的端口号码。

    alert(window.location.port);

    //设置或获取 URL 的协议部分。

    alert(window.location.protocol);

    //设置或获取 href 属性中在井号“#”后面的分段。

    alert(window.location.hash);

    //设置或获取 location 或 URL 的 hostname 和 port 号码。

    alert(window.location.host);

    //设置或获取 href 属性中跟在问号后面的部分。

    alert(window.location.search);



    关闭
    程序员人生