jquery.parsequery.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * Copyright (c) 2010 Conrad Irwin <conrad@rapportive.com> MIT license.
  3. * Based loosely on original: Copyright (c) 2008 mkmanning MIT license.
  4. *
  5. * Parses CGI query strings into javascript objects.
  6. *
  7. * See the README for details.
  8. **/
  9. /*jshint jquery:true */
  10. /*global window:true */
  11. define([
  12. "jquery"
  13. ], function($){
  14. $.parseQuery = function(options) {
  15. var config = {query: window.location.search || ""},
  16. params = {};
  17. if (typeof options === 'string') {
  18. options = {query: options};
  19. }
  20. $.extend(config, $.parseQuery, options);
  21. config.query = config.query.replace(/^\?/, '');
  22. $.each(config.query.split(config.separator), function(i, param) {
  23. var pair = param.split('='),
  24. key = config.decode(pair.shift(), null).toString(),
  25. value = config.decode(pair.length ? pair.join('=') : null, key);
  26. if (config.array_keys(key)) {
  27. params[key] = params[key] || [];
  28. params[key].push(value);
  29. } else {
  30. params[key] = value;
  31. }
  32. });
  33. return params;
  34. };
  35. $.parseQuery.decode = $.parseQuery.default_decode = function(string) {
  36. return decodeURIComponent((string || "").replace('+', ' '));
  37. };
  38. $.parseQuery.array_keys = function() {
  39. return false;
  40. };
  41. $.parseQuery.separator = "&";
  42. });