我想查找有關如何序列化一個對象查詢字符串格式的信息,但我的所有搜索都溺水如何去其他方式的結果(字符串/表格/不管是JSON)。序列化對象查詢字符串在JavaScript/jQuery
我
{ one: 'first', two: 'second' }
,我想
?one=first&two=second
有沒有做到這一點的好辦法?我不介意插件或whatnots - 如果我找到的代碼是不是一個插件,我可能就重新寫一個反正...
我想查找有關如何序列化一個對象查詢字符串格式的信息,但我的所有搜索都溺水如何去其他方式的結果(字符串/表格/不管是JSON)。序列化對象查詢字符串在JavaScript/jQuery
我
{ one: 'first', two: 'second' }
,我想
?one=first&two=second
有沒有做到這一點的好辦法?我不介意插件或whatnots - 如果我找到的代碼是不是一個插件,我可能就重新寫一個反正...
你想$.param()
:http://api.jquery.com/jQuery.param/
具體來說,你想這樣的:
var data = { one: 'first', two: 'second' };
var result = $.param(data);
當給定這樣的事情:
{a: 1, b : 23, c : "[email protected]#st"}
$.param
將返回此:
a=1&b=23&c=te!%40%23st
請注意,如果您的對象中有一個數組,它將無法正確進行參數化。 – crv 2012-04-26 19:46:12
@crv:對。在這種情況下,JSON可能是最好的 – 2012-04-28 21:23:14
@crv我在我的數組中,它工作正常。 – 2012-12-04 16:52:54
或者YUI有http://yuilibrary.com/yui/docs/api/classes/QueryString.html#method_stringify。
例如:
var data = { one: 'first', two: 'second' };
var result = Y.QueryString.stringify(data);
它不再被維護。 – 2015-07-23 21:22:16
另一種選擇可能是node-querystring。
它在npm
和bower
都可用,這就是我一直在使用它的原因。
對於一個快速非jQuery函數...
function jsonToQueryString(json) {
return '?' +
Object.keys(json).map(function(key) {
return encodeURIComponent(key) + '=' +
encodeURIComponent(json[key]);
}).join('&');
}
注意這不會處理數組或嵌套對象。
酷,工作!我只添加了'if(json [key]!= null)'省略了空值 – 2015-07-23 21:47:05
這是一個很好的,僅限JavaScript的解決方案。可以將調用賦值給'Object.keys'到一個'params'變量和'return params.length && params.join('&')||。 「」對於對象可能爲空的情況,即'json = {}'。 – 2015-09-17 21:27:29
這比'$ .param'好,因爲param編碼的形式不是urls,所以param空格變成'+'而不是'%20',這可能會導致各種問題,特別是MVC – NibblyPig 2017-04-24 11:59:58
這裏有一些很好的普通JS解決方案:http://stackoverflow.com/questions/1714786/querystring-encoding-of-a-javascript-object其中有些不長於這裏的框架解決方案。 – 2015-05-10 22:28:33