Ajaxを使用してデータベースにフォームごとにデータを挿入することはできません。誰かが助けてくれるFirebugエラーはありません
見る:
<!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>
モデル:
<?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);
}
}
コントローラー:
<?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";
}
}
}
エラーはありませんが、データはデータベースに挿入されず、成功メッセージも表示されません。
これを試して。
ビュー内(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>
コントローラー内
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";
}
}
}
モデル内
function registre($email)
{
$data = array(
'email'=>$this->input->post('email')
);
$this->db->insert('utilisateurs',$data);
}
最初にコントローラーでモデルをロードします。
public function __construct()
{
parent::__construct();
$this->load->helper(array('form','url'));//loads required heplers
$this->load->model('blog_m');//loads your model
}
ビュー:ajaxを使用しているので、フォームaction
emptyを設定します。
<?php echo form_open('',array('id'=>'myForm'));?>