1. ホーム
  2. javascript

パラメータオブジェクトからクエリ文字列を生成する

2023-10-15 03:16:02

質問

Angularjsでクエリパラメータを使用してURLを構築する方法。

私は、APIを参照してください $location.search()

問題は、$location(url)がurlにリダイレクトするものであることです。私の場合、クエリパラメータにurlとkey:valueのペアを渡してurlを構築したいのですが、以下のような感じです。

urlを指定します。 /a/b/c params: {field1: value1, field2: value2}

の結果です。 /a/b/c?field1=value1&field2=value2

私はこのurlをリンクに使いたいのです。私はまた、アンギュラーエンコードを見たことがあります ? , & の文字が表示されます。これを避けることはできますか?

編集してください。

私の意図は、urlをアンカー要素のhrefとして使用することでした。私はリクエストを送信するために$httpを使用していますが、時々、クエリパラメータ(現在のオブジェクトに基づく)を持つリンクを提供する必要があります。

ありがとうございます。

どのように解決するのですか?

1.4+の時点では良い解決策があります。パラメータオブジェクトからクエリ文字列を構築することができます。 $httpParamSerializer :

var qs = $httpParamSerializer(params);

ドキュメントを見る

<ブロッククオート

オブジェクトを文字列に変換するデフォルトの $http params シリアライザです。 に変換します。

{'foo': 'bar'} results in foo=bar
{'foo': Date.now()} results in foo=2015-04-01T09%3A50%3A49.262Z (toISOString() and encoded representation of a Date object)
{'foo': ['bar', 'baz']} results in foo=bar&foo=baz (repeated key for each array element)
{'foo': {'bar':'baz'}} results in foo=%7B%22bar%22%3A%22baz%22%7D" (stringified and encoded representation of an object)
Note that serializer will sort the request parameters alphabetically.