我也遇到了这个问题,但没有找到解决方案,在阅读了 jQuery 文档后,我有了一个想法。
您可以使用.serializeArray()
而不是仅.serialize()
使用 php.ini 文件。这是我在项目中使用的代码。
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 框架。以格式组织该帖子数据,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);
如我错了请纠正我; 我刚刚分享了解决这个问题的想法。