代码之家  ›  专栏  ›  技术社区  ›  shahjapan

如何使用querystring将数据填充到extjs组件?

  •  0
  • shahjapan  · 技术社区  · 15 年前

    例如,如果我有extjs组合框,并且我有类似url的 http://localhost:8080?param=value1,value2,value3

    我怎么能拿到这个 << param >> value 在extjs中,这样我就可以把它转换成 Ext.data.Array 或者…

    3 回复  |  直到 9 年前
        1
  •  2
  •   Walf    15 年前

    我有这个(基于上面找到的代码@lloyd):

    var the_query_string = new Object();
    (function() {
     var qs = location.search.substr(1).replace(/\+/g, ' ').split('&');
     for (var i = 0; i < qs.length; i++) {
      qs[i] = qs[i].split('=');
      if (qs[i][0])
       the_query_string[qs[i][0]] = decodeURIComponent(qs[i][1]);
     }
    })();
    

    所以我可以全局访问任何querystring变量。例如当
    location.search = '?search=hello+world&foo=bar%3Dbar'
    然后
    the_query_string.search = 'hello world'
    the_query_string.foo = 'bar=bar'

        2
  •  5
  •   Jonathan Julian    15 年前

    使用框架解码查询字符串:

    var params = Ext.urlDecode(location.search.substring(1));
    var array = [];
    for (var name in params) {
        array.push([name, params[name]]);
    }
    

    现在 array 适合用作 data ArrayStore 随场 name value .

        3
  •  1
  •   Lloyd    15 年前

    我使用了一个刚才找到的javascript文件:

    /* Client-side access to querystring name=value pairs
        Version 1.2.3
        22 Jun 2005
        Adam Vandenberg
    */
    
    function QueryString(qs) { // optionally pass a querystring to parse
        this.params = new Object()
        this.get = QueryString_get
    
        if (qs == null)
            qs=location.search.substring(1,location.search.length)
    
        if (qs.length == 0) return
    
    // Turn <plus> back to <space>
    // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
        qs = qs.replace(/\+/g, ' ')
        var args = qs.split('&') // parse out name/value pairs separated via &
    
    // split out each name=value pair
        for (var i = 0, len = args.length; i < len; i++) {
            var value;
            var pair = args[i].split('=')
            var name = unescape(pair[0])
    
            if (pair.length == 2)
                value = unescape(pair[1])
            else
                value = name
    
            this.params[name] = value
        }
    }
    
    function QueryString_get(key, default_) {
        // This silly looking line changes UNDEFINED to NULL
        if (default_ == null) default_ = null;
    
        var value=this.params[key]
        if (value==null) value=default_;
    
        return value
    }
    

    然后你要做的是:

    var param = new QueryString().get("param");
    var values = param.split(",");
    

    值将成为数组。