2014-10-02 58 views
1

我抓住从表单数据与的js序列化(),并添加数据到数据库

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

我得到例如 名=账单&年龄= 133 &性别=男性

然后将此数据发送结果使用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页面或成功部分没有结果,所以我看不到阵列的结构,我不能弄明白哪里是错误,可有人我写的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;    
    } 

diffrence name=bill&age=133&gender=male阵列是在这里我只有一个科拉姆后来我增加了两个

回答

0

不,你不需要把它放在另一个父架内。使用串行输入直接:

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中,你可以使用它们里面后,无需使用parse_str()

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

问题是因为我把数据类型: “JSON”, – 2014-10-02 09:17:26

+0

@VladimirŠtus所以现在解决了? – Ghost 2014-10-02 10:14:15

+0

是的工作,我给你正确答案ty – 2014-10-02 11:38:50