Js serialize()并将数据添加到数据库中

Js serialize() and adding data into database

本文关键字:添加 数据库 数据 serialize Js      更新时间:2023-09-26

我用从表单中获取数据

var form_data =  $('#form').serialize();

例如,我得到结果name=账单&年龄=133&gender=男性

然后用ajax将这些数据发送到控制器

 $.ajax({
                            type: "POST",
                            url: "<?php echo base_url().'admin/crud/change_table_data2'?>",
                            data: { 'form_data' : form_data},
                            dataType: "json",
                            success: function(response)
                            {  
                            alert(response);
                            } 
                    })

在控制器中,我尝试这样做,并将数据发送到模型,在那里我尝试将数据插入数据库

parse_str($_POST['form_data'], $add_array);  //parse form inputa koji za koje je koriscenja js f-ja serialize()
            $this->load->model('Data');
            $query = $this->Data->ajax_add($add_array);

我的问题是,当我使用print_r($add_array)时,我在ajax中的页面或成功部分都没有结果,所以我看不到数组的结构,我不知道哪里有错误,有人能为类似于这个的name=bill&age=133&gender=male数组写foreach吗

public function ajax_add($add_array)
    { 
       foreach($add_array as $s)
       {
            foreach($s as $x)
            {
                (string)$data_sanitazed = htmlentities(mysql_real_escape_string($x));
                $data_insert = array('info' => $data_sanitazed);
                $query = $this->db->insert('ci_crud', $data_insert);  
            } 
       }
        return $query;             
    }

不同之处在于,我只有一个列,后来我又添加了两个

不需要将其放入另一个父持有者中。直接使用串行输入:

var form_data = $('#form').serialize();
 $.ajax({
    type: "POST",
    url: "<?php echo base_url().'admin/crud/change_table_data2'; ?>",
    data: form_data, // you can use it directly (name=bill&age=133&gender=male)
    // dataType: "json", also commenting this worked for the OP as well.
    success: function(response) {  
        alert(response);
    } 
});

所以在PHP中,您可以在post中使用它们,而无需使用parse_str():

$_POST['name'] // directly access them
$_POST['age']
$_POST['gender']