dongyuan1970
2016-01-01 11:38
浏览 61

无法使用带有codeigniter的ajax post jquery请求在数据库中插入数据

I want to insert row in database using ajax jquery post method for that i am using the below code in Codeigniter, but my data is not inserted in a database. Please help to sort out my issue.

View:

$("#Submit_Course_Goal").on("click", function (e) {
e.preventDefault();
var dataString = $("form#courseGoalForm").serializeArray();
alert("datastring"+dataString);
$.ajax({
    type: "post",
        url: "<?php echo base_url();?>create_course/create_course_goal",
    cache: false,               
    data: dataString,
    success: function(data){
    alert("data"+data);
    },
    error: function(){                      
    alert('Error while request..');
    }
 });
});

<form name="courseGoalForm" id="courseGoalForm" action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="c_id" value="<?=$result;?>" />
<textarea data-focus="false" rows="8" name="description1"> </textarea>
<textarea data-focus="false" rows="8" name="description2">   </textarea>
<textarea data-lang="en" rows="8" name="description3">  </textarea>
<input type="submit" name="submit" value="Save" class="btn btn-primary btn btn-success" id="Submit_Course_Goal" />
</form>

Model:

public function create_course_goal($data,$id) {

   $this->load->database();
   $this->db->where('id', $id);
   $this->db->update('course', $data);
   $course_id=$id;
   if ($this->db->affected_rows() > 0) {
    return $course_id;
   }
   else
   {
   return false;
   }
}

Controller:

public function create_course_goal(){

    $course_goal1=$this->input->post('description1');
    $course_goal2=$this->input->post('description2');
    $course_goal3=$this->input->post('description3');
    $id=$this->input->post('c_id');  

    $data=array('course_goal1'=>$course_goal1,'course_goal2'=>$course_goal2,'course_goal3'=>$course_goal3);
    $result_course = $this->course_model->create_course_goal($data,$id);

    if($result_course!='false')
    {
        return true;
    }
    else
    {
        return false;
    }

}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • doujiao9426 2016-01-01 12:48
    已采纳

    Try these codes.

    ("#Submit_Course_Goal").on("click", function (e) {
    e.preventDefault();
    var description1  = $("#description1").val();
    var description2  = $("#description2").val();
    var description3 = $("#description3").val(); 
    
    
    $.ajax({
        type: "post",
            url: "<?php echo base_url();?>create_course/create_course_goal",
        cache: false,               
        data: {
            desc1 : description1,
            desc2 : description2,
            desc3 : description3
        },
        success: function(data){
        console.log(data);
        },
        error: function(){                      
        alert('Error while request..');
        }
     });
    });
    
    <!-- Form -->
    
    <form name="courseGoalForm" id="courseGoalForm" action="" method="post" enctype="multipart/form-data" onclick="return false">
        <input type="hidden" name="c_id" value="<?=$result;?>" />
        <textarea data-focus="false" rows="8" name="description1" id="description1"> </textarea>
        <textarea data-focus="false" rows="8" name="description2" id="description2">   </textarea>
        <textarea data-lang="en" rows="8" name="description3" id="description3">  </textarea>
        <input type="submit" name="submit" value="Save" class="btn btn-primary btn btn-success" id="Submit_Course_Goal" />
    </form>
    
    
    <!-- Controller -->
    
    <?php 
    
        public function create_course_goal(){
    
    
    
        $data=array(
            'ID' => $this->input->post('c_id'),
            'course_goal1'=> $this->input->post('desc1'),
            'course_goal2'=> $this->input->post('desc2'),
            'course_goal3'=> $this->input->post('desc3')
            );
        $result = $this->course_model->create_course_goal($data);
    
        if ($result) {
          echo 'success';
        }else echo 'fail';
    
    }
    
    
    /*MODEL*/
    
    function create_course_goal($data = array())
      {
        return $this->db->insert('course',$data);
    
      }
    
     ?>
    
    点赞 打赏 评论
  • duancuisan2503 2016-01-01 12:02

    Try this.

    Controller.

    public function create_course_goal(){
    
    
    
        $data=array(
            'ID' => $this->input->post('c_id'),
            'course_goal1'=> $this->input->post('description1'),
            'course_goal2'=> $this->input->post('description2'),
            'course_goal3'=> $this->input->post('description3')
            );
        $result = $this->course_model->create_course_goal($data);
    
        if ($result) {
          echo 'success';
        }else echo 'fail';
    
    }
    

    Model

     function create_course_goal($options = array())
      {
    
        if(isset($options['course_goal1']))
          $this->db->set('course_goal1',$options['course_goal1']);;
        if(isset($options['course_goal2']))
          $this->db->set('course_goal2',$options['course_goal2']);;
        if(isset($options['course_goal3']))
          $this->db->set('course_goal3',$options['course_goal3']);;
    
    
        $this->db->where('ID',$options['ID']);
        $this->db->update('course');
        return $this->db->affected_rows();
      }
    

    Note : course_goal1, course_goal2, course_goal3 should be same as in database. and course should be database table's name.

    This was for update database if you want to insert new data use this model

    function addNewData($data = array())
      {
        return $this->db->insert('course',$data);
    
      }
    

    Note 2 : in your database 'id' should be primary and auto incrementing your table name should be 'course' and row names should be 'course_goal1', 'course_goal2', 'course_goal3'

    点赞 打赏 评论
  • duai5344 2016-01-01 12:33

    Have you tried removing method='post' from the Form and submit your data with ajax

    点赞 打赏 评论
  • dongqiang8474 2016-01-01 12:46

    have you tried this !

    var dataString = $("#courseGoalForm").serialize();

    instead of

    var dataString = $("form#courseGoalForm").serializeArray();

    点赞 打赏 评论

相关推荐 更多相似问题