web-dev-qa-db-ja.com

JavaScript / jQueryで文字列を照会するオブジェクトをシリアル化します

クエリ文字列形式にオブジェクトをシリアル化する方法に関する情報を見つけようとしていますが、すべての検索結果が他の方法(文字列/フォーム/なんでもJSON)で結果にinれています。

私は持っています

{ one: 'first', two: 'second' }

そして私は欲しい

?one=first&two=second

これを行う良い方法はありますか?私はプラグインやその他のことを気にしません-私が見つけたコードがプラグインでない場合は、とにかくそれを書き直します...

147
Tomas Aschan

必要な$.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
228
Chris Laplante

簡単な非JQuery関数の場合...

function jsonToQueryString(json) {
    return '?' + 
        Object.keys(json).map(function(key) {
            return encodeURIComponent(key) + '=' +
                encodeURIComponent(json[key]);
        }).join('&');
}

これは配列またはネストされたオブジェクトを処理しないことに注意してください。

60
Rich Smith

別のオプションは node-querystring です。

npmbowerの両方で利用できるため、私はこれを使用しています。

15
wprl

あるいは、YUIには http://yuilibrary.com/yui/docs/api/classes/QueryString.html#method_stringify があります。

例えば:

var data = { one: 'first', two: 'second' };
var result = Y.QueryString.stringify(data);
4
Alex Stetsenko