【问题标题】:Javascript convert query string to JSON using jQuery and back to query string [closed]Javascript使用jQuery将查询字符串转换为JSON并返回查询字符串[关闭]
【发布时间】:2013-12-19 09:30:58
【问题描述】:

希望您会发现以下函数对于将查询字符串转换为 json 对象很有用

var queryStringToJSON = function (url) {
    if (url === '')
        return '';
    var pairs = (url || location.search).slice(1).split('&');
    var result = {};
    for (var idx in pairs) {
        var pair = pairs[idx].split('=');
        if (!!pair[0])
            result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
    }
    return result;
}

用法:

获取当前windows查询字符串

var result = queryStringToJSON() // without any parameter

从自定义查询字符串中获取 json:

var result = queryStringToJSON('?name=prem&age=30&HEIGHT=5.8')

输出: {name:"prem", age:"30", height:"5.8"} //All keys are converted into small letters

要将其转换回 url,您可以使用 jQuery 参数 方法

$.param(result)

要操作您的查询字符串,您可以简单地使用 JavaScript 中的标准对象操作并再次使用 $.param 方法

result.age=35;
delete result['name']; 

【问题讨论】:

  • 那么你的问题是什么?
  • 他刚刚发布了他有用的功能来帮助别人......所以这里没有问题......
  • 那为什么我会在“问题”部分找到这个?
  • 谢谢@premChandaraSingh
  • 这似乎不适用于数组:例如:?=name=Tom&name=Jeff

标签: javascript jquery json query-string


【解决方案1】:

工作,但如果你使用 url || location.search,那么你应该删除 if(url === '') return '' 或者它应该像,

var queryStringToJSON = function (url) {
    url = url || location.search;// url or location.search
    if (url === '')
        return '';// return if url and location.search not found
    // your remainig code
}

【讨论】:

  • 了解,但这是一项特殊检查。 '' 是字符串操作中的特殊假值。所以我只想检查一下 falsy 值是否为空字符串,然后按原样返回。
  • 那么你不应该在var pairs = (url || location.search).slice(1).split('&');行中使用location.search
【解决方案2】:

或者...而不是:

for (var idx in pairs) {
    var pair = pairs[idx].split('=');
    if (!!pair[0])
        result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
}

试试:

result = pairs.reduce(function(a,b) {
     var pair = b.split("=");
     a[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
     return a;
},{});

工作方式相同,但使用 reduce(),它是一个原生 javascript 函数,可能更快。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多