私もこの問題に直面しましたが、解決策が見つかりませんでした.jQueryのドキュメントを読んだ後、私はアイデアを得ました.
php.ini ファイルをいじる.serializeArray()
だけではなく、そのまま使用できます。.serialize()
これが私のプロジェクトで使用したコードです。
jQuery('.modal').on('click','.saveFeature',function(){
var form = jQuery('#featureForm').serializeArray();
jQuery.ajaxSetup({
data:{
csrf_name:jQuery('input[name="csrf_name"]').val()
}
});
var url = "<?php echo 'product/features/'.$pid;?>";
jQuery.post(url,{form}, function(msg){
alert(msg);
} );
});
フォームを送信すると、以下の形式でデータが取得されます。
Array
(
[0] => Array
(
[name] => csrf_name
[value] => 3802b11296d42e602533bf266bb800bd
)
[1] => Array
(
[name] => title
[value] => kjhkjh
)
[2] => Array
(
[name] => title_icon
[value] => fa fa-heart
)
[3] => Array
(
[name] => icon_color
[value] => #a81616
)
[4] => Array
(
[name] => icon_bg_color
[value] => #662f2f
)
[5] => Array
(
[name] => description
[value] => testb
)
[6] => Array
(
[name] => box_bg_color
[value] => #bd2222
)
[7] => Array
(
[name] => box_bttm_bg
[value] => #a61e1e
)
)
バックエンドで投稿データを処理するため、CodeIgniter Framework を使用しています。key=>value
データを保存しやすい形式で投稿データを整理します。
$arry = $this->input->post('form');
$post = [];
//check if this is not empty and is array
if(!empty($arry) && is_array($arry)){
//iterate over post data and organize array in key value format.
foreach($arry as $ar)
{
$post[$ar['name']] = $ar['value'];
}
}
$data = [
'pid' => $pid,
'title' => $post['title'],
'icon' => $post['title_icon'],
'icon_color' => $post['icon_color'],
'icon_bg_color' => $post['icon_bg_color'],
'description' => $post['description'],
'box_bg_color' => $post['box_bg_color'],
'box_bttm_color' => $post['box_bttm_bg'],
];
$this->db->insert(TBL_PRODUCT_FEATURES, $data);
間違っていたら訂正してください。この問題を解決するためのアイデアを共有しました。