162

JavaScriptでGET リクエストを実行するためのクエリ パラメータを作成する方法はありますか?

Python と同じようにurllib.urlencode()、辞書 (または 2 つのタプルのリスト) を取り、 のような文字列を作成します'var1=value1&var2=value2'

4

14 に答える 14

213

どうぞ:

function encodeQueryData(data) {
   const ret = [];
   for (let d in data)
     ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));
   return ret.join('&');
}

使用法:

const data = { 'first name': 'George', 'last name': 'Jetson', 'age': 110 };
const querystring = encodeQueryData(data);
于 2008-09-21T17:53:45.457 に答える
83

機能的

function encodeData(data) {
    return Object.keys(data).map(function(key) {
        return [key, data[key]].map(encodeURIComponent).join("=");
    }).join("&");
}   
于 2012-08-20T15:31:41.550 に答える
8

Prototypeを使用している場合はForm.serializeがあります

jQueryを使用している場合は、Ajax/serializeがあります

ただし、これを達成するための独立した関数については知りませんが、現在ライブラリを使用していない場合は、Google 検索でいくつかの有望なオプションが見つかりました。そうでない場合は、本当にそうすべきです。彼らは天国だからです。

于 2008-09-21T17:49:10.040 に答える
5

このほぼ10年前の質問を再訪したいだけです。この既製のプログラミングの時代では、依存関係マネージャーを使用してプロジェクトをセットアップするのが最善の策です ( npm)。クエリ文字列をエンコードし、すべてのエッジ ケースを処理するライブラリの家内工業があります。これは最も人気のあるものの1つです -

https://www.npmjs.com/package/query-string

于 2017-05-30T23:59:00.937 に答える
3

typescript に少し変更を加えます:

  public encodeData(data: any): string {
    return Object.keys(data).map((key) => {
      return [key, data[key]].map(encodeURIComponent).join("=");
    }).join("&");
  }
于 2016-11-08T13:43:55.987 に答える
-12

このスレッドは、php で URL をエスケープするためのコードを示しています。ほとんどの作業はescape()andunescape()で実行できますが、さらにいくつか追加する必要があります。

function urlencode(str) {
str = escape(str);
str = str.replace('+', '%2B');
str = str.replace('%20', '+');
str = str.replace('*', '%2A');
str = str.replace('/', '%2F');
str = str.replace('@', '%40');
return str;
}

function urldecode(str) {
str = str.replace('+', ' ');
str = unescape(str);
return str;
}
于 2008-09-21T17:50:17.760 に答える