【问题标题】:Cannot insert data in database using ajax post jquery request with codeigniter无法使用带有codeigniter的ajax post jquery请求在数据库中插入数据
【发布时间】:2016-04-05 23:28:11
【问题描述】:

我想使用 ajax jquery post 方法在数据库中插入行,因为我在 Codeigniter 中使用以下代码,但我的数据没有插入数据库中。 请帮助解决我的问题。

查看:

$("#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>

型号:

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;
   }
}

控制器:

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;
    }

}

【问题讨论】:

  • 同时发布alert("datastring"+dataString);的值
  • 是否有错误代码/错误信息?
  • 数据字符串的值为 [object Object],[object Object],[object Object],[object Object]
  • 没有没有错误
  • Saty-但在成功部分数据为空白

标签: php jquery ajax codeigniter


【解决方案1】:

你试过了吗!

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

而不是

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

【讨论】:

  • 是用过但没找到解决办法
【解决方案2】:

试试这些代码。

("#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);

  }

 ?>

【讨论】:

    【解决方案3】:

    试试这个。

    控制器。

    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';
    
    }
    

    型号

     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();
      }
    

    注意:course_goal1、course_goal2、course_goal3 应与数据库中的相同。当然应该是数据库表的名称。

    这是用于更新数据库,如果您想插入新数据,请使用此模型

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

    注意 2:在您的数据库中,“id”应该是主要的并且自动递增 你的表名应该是“课程” 并且行名应该是“course_goal1”、“course_goal2”、“course_goal3”

    【讨论】:

    • 公共函数 testCourse(){ $data=array( 'ID' => '1', 'course_goal1'=> 'test1', 'course_goal2'=> 'test2', 'course_goal3'= > 'test3' ); $result = $this->course_model->create_course_goal($data); if ($result) { echo '成功'; } 其他回声“失败”; } 结果是什么
    • 顺便说一句,您是否尝试将新记录设置到数据库或更新。
    • 如果我手动填写字段值,我会在数据库中插入记录。
    • like $data=array('course_goal1'=>'record1','course_goal2'=>'record2','course_goal3'=>'record3');
    • Enes-我发现问题实际上是它的文本区域我从文本框获取价值但无法从文本区域获取价值如何解决这个问题
    【解决方案4】:

    您是否尝试过从表单中删除 method='post' 并使用 ajax 提交数据

    【讨论】:

    • 我必须使用post方法提交
    • 你已经在用 ajax 做,为什么还要加两次?
    • 我正在从文本框获取价值,但无法使用 textarea 获取价值
    • 您是否使用过网络控制台中的网络选项卡来查看值是否通过邮寄提交?
    • 这个&lt;input type="hidden" name="c_id" value="&lt;?=$result;?&gt;" /&gt;应该是这个&lt;input type="hidden" name="c_id" value="&lt;?php echo $result;?&gt;" /&gt;
    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多