QUOIT Blog

jQueryと配列

この記事は8年以上前の記事です。情報が古い場合がありますのでお気を付け下さい。

はまったのでメモ書き。

<やりたいこと>
jQueryを使ってAJAXでPHPに配列を渡したい

<10/26:追記しました>


<前提>
・CentOS5.3
・PHP5.2.11
・jquery-1.3.2.min.js

<サンプルソース>

$.ajax({
type: “GET”,
url: “test.php”,
data: {
id:[1,2,3,4,5,6,7]
},
success: function(){
alert(‘成功しました’);
},
error: function(){
alert(‘エラーです’);
}
});

<問題点>
・jQueryは上記のソースで「id=1&id=2&id=3&id=4&id=5&id=6&id=7」というリクエストを行う
→同じキーで複数の値を送信する
・PHPは同じキーで複数の値が送信されていた場合、後から受け取ったものだけが有効になる
→上記ソースで受け取れるのは「array(1) { [“id”]=> string(1) “7” } 」のみ

<解決方法>
見当たらない。
ので、別の方法を使えということか。

仕方ないので、当面は「カンマ区切りの文字列にしてPHP側で分割」という方法で回避しようと思いますが、
どうにかならないんだろうか?これは…

<10/26:追記>
コメントにて提案頂いた方法

data: {
“id[]”:[1,2,3,4,5,6,7]
},

で取得できました…!
これでvar_dumpの結果は

array(1) {
[“id”]=>
array(20) {
[0]=>
string(1) “1”
[1]=>
string(1) “2”
[2]=>
string(1) “3”
……
}

となりました!!
HOGE-CHONさん、ありがとうございます!

<さらに追記>
var_dumpの結果を他のソースから持ってきて不思議なことになってしまっていたので修正しました。失礼しました。

5 comments for “jQueryと配列

  1. HOGE-CHON
    2009年10月26日 at 12:56 PM

    “”でつながれた文字列で入っているってことはないですかね?
    あるいは意外と、
    data: {
     ”id[]”:[1,2,3,4,5,6,7]
    },
    で出来たりとか・・・。
    試してないけど。

  2. HOGE-CHON
    2009年10月26日 at 12:57 PM

    上記””は”¥0”です。
    半角ではうまく入らなかったようで。

  3. yakumo
    2009年10月26日 at 2:45 PM

    >あるいは意外と、
    >data: {
    > ”id[]“:[1,2,3,4,5,6,7]
    >},
    >で出来たりとか・・・。

    な ん と これで取得できましたー!!
    すげー!ありがとうございます!!

  4. HOGE-CHON
    2009年10月26日 at 5:19 PM

    string(2) って気になるね。
    なぜ string(1) ではないのだろう・・・
    NULL文字”¥0”が入っているのでしょうか?

  5. yakumo
    2009年10月26日 at 5:26 PM

    HOGE-CHONさん
    大変失礼しました…m(_ _)m
    var_dumpの結果を他のソースから持ってきてしまったのでおかしな表示になってましたね。。
    修正しました。