El formulario ajax de jquery no funciona con codeigniter pero funciona de otra manera

Intenté enviar un formulario usando jquery ajax sin codeigniter solo para entender cómo funciona ajax. Funcionó bien, pero ahora quiero hacerlo en codeigniter (ya que estoy desarrollando mi aplicación en CI). No está insertando los valores en la base de datos. No sé cómo comprobar dónde está el problema.

Este es mi formulario a la vista:

  

Este es mi script ajax jquery: –

   $('#submit_article').click(function(){ var article_title = document.getElementById("title").value; var article_body = document.getElementById("body").value; $.ajax({ url: '', type: 'POST', dataType: 'json', data: 'title='+article_title + '&body='+article_body, success: function(output_string){ $('#result_table').append(output_string); } }); });  

Main es el controlador y esta la función submit_article: –

 public function submit_article() { $article_title = $this->input->post('title'); $article_body = $this->input->post('body'); $this->load->model("model_articles"); if($this->model_articles->article_submit($article_title, $article_body)) { return true; } else { return false; } } 

Esto carga el modelo – model_articles y pasa dos valores, a saber $ article_title y $ article_body a la función article_submit (). Esta es la función en el modelo que tiene que insertar los valores en la base de datos:

 public function article_submit($article_title, $article_body) { $article_data = array( 'title' => $article_title, 'body' => $article_body ); $query_insert_article = $this->db->insert('articles', $article_data); if($query_insert_article) { return true; } else { return false; } } 

Necesitas cambiar la función de tu controlador y ajax para probar este

    

y este es el tuyo controlador

  public function submit_article($article_title,$article_body ) { $this->load->model("model_articles"); if($this->model_articles->article_submit($article_title, $article_body)) { return true; } else { return false; } 

}

espero que sovle …..

Necesitas cambiar tu JavaScript a esto:

 $('#submit_article').click(function(e) { var article_title = $('input[name="title"]').val(); var article_body = $('textarea[name="body"]').val(); $.ajax({ url: 'main/submit_article', type: 'POST', dataType: 'json', data: 'title=' + article_title + '&body=' + article_body, success: function(output_string) { $('#result_table').append(output_string); } }); // Add this if you want to prevent the normal form from sending: e.preventDefault(); });