Вставка с помощью ajax не работает в codeigniter - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь вставить одну запись в базу данных с помощью 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 голосов
/ 11 июня 2018

Надеюсь, это поможет вам:

Ваше мнение должно быть таким: (см. URL-адрес действия)

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

Ваш Ajax:

<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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...