2014-12-03 72 views
0

我正在创建一个codeigniter项目,其中我从我的数据库中获取项目数量,每个项目都有一个提交按钮,点击哪个数据使用AJAX和jQuery存储到数据库中。 现在,问题是,当我提交任何项目时,只有第一种形式的数据被发送到插入数据到数据库的方法,请提供一些相同的解决方案。我的代码是为下:使用Ajax和jQuery将数据提交到数据库 - codeigniter提交

型号:

<?php 
class Products_model extends CI_Model{ 

    function get_all(){ 

     $results = $this->db->get('tblUtensils')->result(); 

     return $results; 
    } 
    function get($id){ 
     $results = $this->db->get_where('tblUtensils', array('pkItemID' => $id))->result(); 
     $result = $results[0]; 

     return $result; 
    } 
} 


?> 

查看:

<body> 

    <div id="products"> 
     <?php foreach ($products as $product): 
     $id=$product->pkItemID; 
     ?> 
      <li> 
       <?php echo form_open('shop/add', 'id="form"'); ?> 


        <div><?php echo form_input('name_' . $id, $product->fldName , 'id='.'"'.'name_' . $id.'"');?></div> 
        <div><?php echo form_input('desc_' . $id, $product->fldDescription , 'id='.'"'.'desc_' . $id.'"');?></div> 
        <div><?php echo form_input('rate_' . $id, $product->fldRateMB1 , 'id='.'"'.'rate_' . $id.'"');?></div> 
        <div><?php echo form_input('Qty_' . $id, 0, 'id='.'"'.'qty_' . $id.'"');?></div> 
        <?php echo form_hidden('id', $product->pkItemID, 'id="ID"'); ?> 

        <?php echo form_submit('action', 'Add','id="submit"');?> 

       <?php echo form_close(); ?> 
      </li> 

     <?php endforeach; ?> 
    </ul> 

    </div> 

    <!-- try 2 --> 
    <script type = "text/javascript"> 
$(function(){ 
    $('form').submit(function(e){ 
    e.preventDefault(); // <------this will restrict the page refresh 
    var form_data = { 
     id: $('#id').val(), 
     name: $('#name_' + id).val(), 
     rate: $('#rate_' + id).val(), 
     qty: $('#qty_' + id).val() 
    }; 

    $.ajax({ 
     url: "<?php echo site_url('shop/add'); ?>", 
     type: 'POST', 
     data: form_data, 
     success: function(msg) { 
       alert("success"); 
     } 

    }); 
    return false; 
}); 
}); 
</script> 

</body> 

</html> 

控制器:

<?php 

class Shop extends CI_Controller{ 

    function index(){ 

     $this->load->model('Products_model'); 
     $data['products'] = $this->Products_model->get_all(); 
     $this->load->view('products',$data); 


    } 

    function add(){ 
     //$this->load->model('Products_model'); 
     //$product = $this->Products_model->get($this->input->post('id')); 

     $insert = array(
     'id' => $this->input->post('id'),//<-- also not able to get this id from ajax post request 
     'qty' => $this->input->post('qty'), 
     'price' => $this->input->post('rate'), 
     'name' => $this->input->post('name'), 
     ); 
     $this->cart->insert($insert);//<--insert item into cart 
     $query// to insert into database 

     //redirect('shop'); 
     } 

} 
?> 

许多问题已张贴有关笨和Ajax之前,但无一获得成功为我的问题提供解决方案,所以我发布这个问题,感谢您的帮助。

+0

请阅读DOM这里:http://kangax.github.io/domlint/ 你的表格具有相同的ID。 – 2014-12-03 06:41:36

+0

所以最新的解决方案? – Abhishek 2014-12-03 10:26:37

回答

0

我试图对付这一点,并最终为我工作的事情是为下的许多方面:

<script type = "text/javascript"> 
    $('.submit').click(function(){ 
     var id = (this.id); 
     var form_data = {   //repair 
      id: id, 
      name: $('#name_' + id).val(), 
      rate: $('#rate_' + id).val(), 
      qty: $('#qty_' + id).val() 
     }; 

    $.ajax({ 
     url: "<?php echo site_url('shop/add'); ?>",//repair 
     type: 'POST', 
     data: form_data, // $(this).serialize(); you can use this too 
     success: function(msg) { 
       alert("success..!! or any stupid msg"); 
     } 

    }); 
    return false; 

}); 

</script> 
+0

我添加了class =“submit”和id =“id”到我的提交按钮,所以现在我可以使用它的onClick事件来获取id,这是我需要分配给我的变量“id”的值。谢谢你们所有人都为你们提供帮助 – Abhishek 2014-12-03 17:36:16

0

变化

<?php echo form_open('shop/add', 'id="form"'); ?> 

<?php echo form_open('shop/add', 'id="form_' . $id . '"'); ?> 

这给不同的ID对每个表单。