Je ne peux pas insérer les données par formulaires dans la base de données avec ajax, il n'y a pas d'erreur firebug, quelqu'un peut m'aider
Vue:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blog</title>
<link rel="stylesheet" href="<?php echo base_url("assets/css/bootstrap.min.css"); ?>">
</head>
<body>
<h3 style="text-align: center;">CODEIGNITER AJAX</h3>
<div class="row">
<div class="alert alert-success" id="message" style="display: none;">
</div>
<div class="col-md-4"></div>
<div class="col-md-4">
<?php echo form_open('blog_c',array('id'=>'myForm'));?>
<div class="form-group">
<label>EMAIL:</label>
<input type="text" name="email" id="email" class="form-control" placeholder="EMAIL">
</div>
<input type="submit" value="ENVOYER" id="btn">
<?php echo form_close()?>
</div>
</div>
<script type="text/javascript" src="<?php echo base_url()?>assets/js/jquery-3.1.1.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#btn').click(function(){
var email=$('#email').val();
$.ajax({ //request ajax
url:"<?php echo site_url('blog_c/registre')?>",
type:POST,
data:{email:email},
dataType:json,
success: function(repons) {
$("#message").html(repons);
},
error: function() {
alert("Invalide!");
}
});
});
});
</script>
</body>
</html>
Modèle:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Blog_m extends CI_Model
{
function __construct()
{
parent:: __construct();
}
function registre($data)
{
$this->db->insert('utilisateurs',$data);
}
}
Contrôleur
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Blog_c extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('blog_w');
}
public function registre()
{
// set rules
$this->form_validation->set_rules('email','EMAIL','trim|required|valid_email|is_unique[utilisateurs.email]');
if($this->form_validation->run()==FALSE)
{
echo validation_errors();
}else{
$data=array(
'email'=>$this->input->post('email'));
$this->blog_m->registre($data);
echo "<div class='alert'>Inscription success</div>";
echo "email";
}
}
}
Il n'y a pas d'erreur mais les données ne sont pas insérées dans la base de données et il n'y a pas de message de réussite.
Essaye ça.
Dans la vue (Partie AJAX)
<script>
$(function(){
$( "#btn" ).click(function(event)
{
event.preventDefault();
var email= $("#email").val();
$.ajax(
{
type:"post",
url: "<?php echo base_url(); ?>index.php/blog_c/registre",
data:{ email:email},
success:function(response)
{
console.log(response);
$("#message").html(response);
$('#cartmessage').show();
}
error: function()
{
alert("Invalide!");
}
}
);
});
});
</script>
Dans le contrôleur
public function registre()
{
$email = $this->input->post('email'); # add this
$this->form_validation->set_rules('email','EMAIL','trim|required|valid_email|is_unique[utilisateurs.email]');
if($this->form_validation->run() == FALSE)
{
echo validation_errors();
}
else
{
if(!$this->blog_m->registre($email))
{
echo "Something Went Wrong";
}
else
{
echo "Inscription success";
}
}
}
Dans le modèle
function registre($email)
{
$data = array(
'email'=>$this->input->post('email')
);
$this->db->insert('utilisateurs',$data);
}
Dans votre modèle de charge de contrôleur en premier.
public function __construct()
{
parent::__construct();
$this->load->helper(array('form','url'));//loads required heplers
$this->load->model('blog_m');//loads your model
}
Dans la vue: vous utilisez ajax alors définissez le formulaire action
vide.Comme cela ..
<?php echo form_open('',array('id'=>'myForm'));?>