web-dev-qa-db-ja.com

配列をURLパラメーターとして渡す方法は?

後でサーバー側で配列の値が必要になるため、配列を渡して、URLパラメーターとしてページのリンクに追加したいと思います。どうすればいいですか?

myArray = ['aaa', 'bbb', 'ccc'];

$('#myLink').attr({"href" : '/myLink?array=' + myArray});

それがこれを行う適切な方法であるかどうかはわかりませんか?

16
Leff

JSONをシリアル化できます。

myArray = ['aaa', 'bbb', 'ccc'];
var arrStr = encodeURIComponent(JSON.stringify(myArray));
$('#myLink').attr({ href: '/myLink?array=' + arrStr });

(次のページの)解析もJavaScriptを介して行われる場合、逆に JSON.parse() を使用します。 PHPそれは json_decode() になります。

27
Rodrigo

サーバー側に依存するべきではありません。URI標準仕様では、すべてのパラメーターには1つの名前と1つの値が必要です。ただし、同じ名前のパラメーターが複数存在する可能性があります。これは、配列をシリアル化する正しい方法です。

http:// server/context?array = aaa&array = bbb&array = ccc&otherparameter = x

次のようにできます:

var s="";
for (var i=0;i< myArray.length;i++)
{
  s+="&myArray="+myArray[i];
}
var url="http://server/context?"+s;
6
Little Santi

これを試して

$('#myLink').attr({"href" : '/myLink?array=' + myArray.join(',')});

サーバー上:データをキャプチャして分割します。

5
JohnTrack

私はこのアプローチで行きます、

var myArray = ['aaa', 'bbb', 'ccc', ];

var myArrayQry = myArray.map(function(el, idx) {
    return 'myArray[' + idx + ']=' + el;
}).join('&');

// myArray[0]=aaa&myArray[1]=bbb&myArray[2]=ccc

次に、サーバー側のURLクエリパラメーターを配列として取得します。

1
bmatovu