关于JS获取URL后携带参数,遇到了一写小问题,求高手指点一二。
    问题是这样的,先写了一个最普通的JS脚本,代码如下:function getString(){
    var url = location.search;
    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;
}    接下来可以获取到正常的参数,但是今天遇到的参数有些特殊,附带的参数里面就有等于号“=”例如(url?para=(qx = 'aaa')&param=(qx1='bbb')),按程序写的则将这个等于号分割,这也就把传递的参数破坏了,求教高手有什么解决方案吗?

解决方案 »

  1.   

    therequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]+"="+strs[i].split("=")[2]);
      

  2.   


    在这个之前判断,strs.length是不是大于2,如果大于2就执行上面那一句,如果不大于2就执行你现在的那一句。
      

  3.   

    你这个url参数已经不合规则了,不知道有什么用。
      

  4.   

    url?para=(qx = 'aaa')&param=(qx1='bbb')Lz,你不用多想。上面的参数已经不是最好的传递方式了。你要做的应该是修正参数传递方式
    url?qx='aaa'&qx1='bbb'
      

  5.   

    function getString(){
        var url = location.search;
        var therequest = new Object();
        if(url.indexOf("?")!= -1){
            var str = url.substr(1),key;
            strs = str.split("&");
            for (var i = 0; i < strs.length; i++) {
                key = strs[i].split("=")[0];
                therequest[key] = unescape(strs[i].replace(key + '=', ''));
            }
        }
        return therequest;
    }
    var kv = getString();
    alert(kv['para'])
    alert(kv['param'])
      

  6.   


    <script type="text/javascript">
          var str = "url?para=(qx = 'aaa')&param=(qx1='bbb')";
      var para = getParam(str);
      for (var item in para) {
    document.write(item + ":" + para[item] + "<br />");
      }
      
      function getParam(url) {
      var reg = /[\?\x26]([a-zA-Z\d]+)=/g;
      
      var arr = url.match(reg);
      var vaArr = url.split(reg);
      var para = {};
      for (var i = 0; i < arr.length; i++) {
    para[arr[i].substring(1, arr[i].length - 1)] = vaArr[i + 1];
      }
      
      return para;
      }
    </script>