0

これは本当に奇妙な問題です。いくつかのフィールドを持つフォームがあり、そのうちの 1 つは次のような複数選択です。

<select name="age_group[]" multiple="multiple">
  // options
</select>

サーバーに投稿するとき、$_POST配列内の複数選択のキーは次のようになります。

age_group[

閉じ括弧が剥がれたのはなぜですか? また、フィールドは配列として保存されず、何らかの理由で文字列として保存されます。console.log()オブジェクトを jQuery でサーバーに送信すると、すべて問題ないように見えます。そのフィールドは実際には配列です。

POST ヘッダー:

POST /ajax.php HTTP/1.1
ホスト: ds.local
接続: キープアライブ
Content-Length: 188
Accept: application/json, text/javascript, / ; q=0.01
オリジン: http://ds.local
X-Requested-With: XMLHttpRequest
ユーザーエージェント: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML、Gecko など) > Chrome/29.0.1547.66 Safari/ 537.36
コンテンツ タイプ: アプリケーション/x-www-フォーム-urlencoded; charset=UTF-8リファラー
: http://ds.local/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: PHPSESSID=9bniv5i558oslo6ne4ev59hdp6

人間が読める POST データ

action: search
entity: DrugStats
data[name]:
data[substance]:
data[atc_code]:
data[year]: n/a
data[gender]: n/a
data[age_group[]][]: 3
data[county]: n/a

エンコードされた POST データ

action=search&entity=DrugStats&data%5Bname%5D=&data%5Bsubstance%5D=&data%5Batc_code%5D=&data%5Byear%5D=n%2Fa&data%5Bgender%5D=n%2Fa&data%5Bage_group%5B%5D%5D%5B%5D=3&data%5Bcounty%5D=n%2Fa

処理コード

$.ajax({
        url: 'ajax.php',
        type: 'post',
        dataType: 'json',
        data: {
               'action': 'search',
               'entity':  $(entity).data('entity'),
               'data':    data,
               'page':    page
              },
        success: function(data) {
            // code
        },
        complete: function() {
            // code
        }
      });
4

0 に答える 0