CODEIGNITER:模式表单插入数据而不加载页面

时间:2016-02-15 07:23:25

标签: javascript php jquery ajax codeigniter

我想创建一个Bootstrap模式,用户在jQuery AJAX的帮助下填充插入到数据库中的数据而不刷新页面,但我不知道如何。

有些人说我会使用ajax,但我对如何在代码中使用ajax感到困惑。我对ajax一无所知所以请帮帮我

查看:

  <div clas="container-fluid">
      <div class="form-group">
    <div class="col-sm-10">
      <!-- Modal -->
      <div class="modal fade" id="myModal" role="dialog">
        <div class="modal-dialog">

          <!-- Modal content-->
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal">&times;</button>
              <h4 class="modal-title">Add Ingredients</h4>
            </div>
            <div class="modal-body">
              <div clas="container-fluid">
      <?php echo form_open('dashboard/uploadIngredients', 'class="form-horizontal" enctype="multipart/form-data"'); ?>
    <div class="form-group">
      <div class="col-sm-10">

        <select required class="form-control" name="ingredient_category">

          <option value="" selected disabled>Select Ingredient Category</option>
      <option value="All">All</option>
      <?php foreach($this->products_model->getCategory() as $row): ?>
        <option value="<?php echo $row->category_id ?>"><?php echo $row->category_name; ?></option>
      <?php endforeach; ?>
        </select>

      </div>
    </div>
  <div class="form-group">
      <div class="col-sm-10">
        <textarea class="form-control" name="ingredients" rows="5" placeholder="Ingredients (EX. onion, oil, pasta)" required></textarea> 
      </div>
    </div>

    <div class='form-group'>
      <div class="col-sm-10">
        <button class="btn btn-lg btn-positive" type="submit"><i class="glyphicon glyphicon-ok"></i> Save Ingredient</button>
      </div>
    </div>
  <?php echo form_close(); ?></div></div>
            <div class="modal-footer">
              <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
          </div> </div> </div></div> </div>
    </div>

   </div>

控制器:

    public function uploadIngredients()
{

    foreach(explode(',', $this->input->post('ingredients')) as $key => $value)
        {
            if (!$this->products_model->getIngredientByName($value)) {
                $saveData[] = array(
                    'ingredient_id' => null,
                    'name'  => trim($value)
                );  
            }
        }

    $ingredient_id = $this->products_model->saveIngredients($saveData); 
    foreach (explode(',', $this->input->post('ingredient_category')) as $key => $value)
    {
     foreach ( $ingredient_id as $key => $str ){
        $joinData[] = array(
                            'ingredient_id'     => $str,
                            'category_id'       => intval($value)
        );
}
        //var_dump($joinData); die();
        $this->products_model->saveCategoryIngredients($joinData);

        redirect('dashboard/add_product');
        }


}/* end of uploadIngredients() */

MODEL:

public function saveIngredients($ingredient_id)
    {
        foreach($ingredient_id as $row => $value) {
            $query=$this->db->where('ingredient_id', $value->ingredient_id);
                $this->db->insert('ingredient', $value);
                $insert_id[] = $this->db->insert_id();  
        }
        return $insert_id;
    }

2 个答案:

答案 0 :(得分:0)

您的观看代码

<div clas="container-fluid">
  <div class="form-group">
<div class="col-sm-10">
  <!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">
    <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Add Ingredients</h4>
        </div>
        <div class="modal-body">
          <div clas="container-fluid">
  <?php echo form_open('', 'class="form-horizontal" enctype="multipart/form-data"'); ?>
<div class="form-group">
  <div class="col-sm-10">
<select required class="form-control" name="ingredient_category">
    <option value="" selected disabled>Select Ingredient Category</option>
  <option value="All">All</option>
  <?php foreach($this->products_model->getCategory() as $row): ?>
    <option value="<?php echo $row->category_id ?>"><?php echo $row->category_name; ?></option>
  <?php endforeach; ?>
    </select>
</div>
</div>


<div class="form-group">
  <div class="col-sm-10">
    <textarea class="form-control" name="ingredients" rows="5" placeholder="Ingredients (EX. onion, oil, pasta)" required></textarea> 
  </div>
</div>
<div class='form-group'>
  <div class="col-sm-10">
    <button class="btn btn-lg btn-positive" id="submit" type="submit"><i class="glyphicon glyphicon-ok"></i> Save Ingredient</button>
  </div>
</div>


<?php echo form_close(); ?></div></div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div> </div> </div></div> </div>
</div>
</div>

您是控制器代码

       public function uploadIngredients()
{

foreach(explode(',', $this->input->post('ingredients')) as $key => $value)
    {
        if (!$this->products_model->getIngredientByName($value)) {
            $saveData[] = array(
                'ingredient_id' => null,
                'name'  => trim($value)
            );  
        }
    }

$ingredient_id = $this->products_model->saveIngredients($saveData); 
foreach (explode(',', $this->input->post('ingredient_category')) as $key => $value)
{
 foreach ( $ingredient_id as $key => $str ){
    $joinData[] = array(
                        'ingredient_id'     => $str,
                        'category_id'       => intval($value)
    );
}
    //var_dump($joinData); die();
    $this->products_model->saveCategoryIngredients($joinData);


    }


}/* end of uploadIngredients() */

并在头标记

添加Jquery Library文件
https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js

和页脚上的Ajax脚本

<script>
jQuery('#submit').on('submit',function(e){
         e.preventDefault();
       jQuery.ajax({
            type: "POST",
            url: '<?php echo base_url();?>dashboard/uploadIngredients',
            data: new FormData(this),
            contentType: false,       
            cache: false,             
            processData:false,    
            success: function(html){
               try{ 
                   alert("success");
                 }catch (e){
                  alert(JSON.stringify(e));
                 }



            },
                 error : function(e){alert("error "+JSON.stringify(e)); }
        });


});
</script>

答案 1 :(得分:0)

将按钮type="submit"更改为type="button"

然后使用

jQuery("#submit").click(function(){

---------------code-------
相关问题