通过ajax插入在codeigniter中不起作用

时间:2018-06-11 00:43:30

标签: php ajax codeigniter codeigniter-3

我正在尝试通过ajax在数据库中插入一条记录,但我不知道我的错误在哪里。

当我提交表单页面时重新加载!!

我的观点

<?php echo form_open('Home',array('id'=>'myForm','class'=>'col-md-7 col-sm-8 col-xs-12'));?>
   <div class="col-md-3 col-sm-4 col-xs-4 no-left-padding">
      <input type="submit" id="btn" value="اشترك" class="btn-default" /> 
   </div>
   <div class="col-md-9 col-sm-8 col-xs-8">
     <input type="text" placeholder="البريد الاليكترونى"  id="email" name="email">
    <i class="fa fa-envelope-o" aria-hidden="true"></i>
   </div>

   <?php echo form_close();?>
<script src="<?php echo base_url();?>js/jquery.min.js"></script>
<script>
    $(function(){
        $( "#btn" ).click(function(event)
        {
            event.preventDefault();
            var email= $("#email").val();

            $.ajax(
                {
                    type:"post",
                    url: "<?php echo base_url(); ?>Home/subscribe/",
                    data:{ email:email},
                    success:function()
                    {

                         alert("success!");
                    }
                    error: function() 
                    {
                        alert("Invalide!");
                    }
                }
            );
        });
    });
</script>

控制器

<?php
class home extends CI_Controller{
    public function __construct()
{
    parent::__construct();
    $this->load->model(array('Home_m')); 
}
    function index(){
        $data=array(
        "slider"=>$this->Home_m->slider(),
        "cat"=>$this->Home_m->cat(),
        );
        $this->load->view('home_v',$data);
    }
    public function subscribe(){

         $email = $this->input->post('email');
        $this->Home_m->index($email);
        //redirect('home','refresh');
        }

}
?>

我的模特

<?php 
class home_m extends CI_Model{
    function index($email){
        $data=array('s_email'=>$this->input->post('email'));
        $this->db->insert('subscribe',$data);

    }
}
?>

我在这里学到了更多的教程和问题,但我不知道为什么不工作和刷新页面!

1 个答案:

答案 0 :(得分:1)

希望这会对您有所帮助:

您的观点应如下所示:(请参阅操作网址)

<?php echo form_open('Home/subscribe/',array('id'=>'myForm','class'=>'col-md-7 col-sm-8 col-xs-12'));?>
   <div class="col-md-9 col-sm-8 col-xs-8">
     <input type="text" placeholder="البريد الاليكترونى"  id="email" name="email">
        <i class="fa fa-envelope-o" aria-hidden="true"></i>
   </div>
   <div class="col-md-3 col-sm-4 col-xs-4 no-left-padding">
     <input type="submit" id="btn" value="اشترك" class="btn-default" />
   </div>

<?php echo form_close();?>

你的阿贾克斯:

<script type="text/javascript">
    var form = $('#myForm'); 
    form.on('submit', function(event){
       event.preventDefault();
       var email = $("#email").val();
       //console.log('some text');
       //return false;
        $.ajax({
            url : form.attr('action'),
            type: 'post',
            data:{"email" : email },
            success: function(data){
                console.log(data)
            }
        })             
    });
</script>

您的控制器应 以资本 开头,如下所示:

<?php
class Home extends CI_Controller{
........
}

并且您的subscribe方法应该是这样的:

public function subscribe()
{
   $email = $this->input->post('email');
   $this->Home_m->index($email);
   echo 'success';
   exit(); 
}

您的模型功能应该是这样的:

function index($email)
{
    $data = array('s_email'=> $email);
    $this->db->insert('subscribe',$data);
}