Невозможно сохранить данные в базе данных с ajax в codeigniter - PullRequest
0 голосов
/ 01 августа 2020

Я использую структуру Codeigniter и не могу сохранить данные в базе данных с ajax в codeigniter, в котором я пытаюсь сохранить данные в MySql.

Я использую AJAX для передачи данных, но данные формы не сохраняются и показывают ошибку из AJAX функции ошибки Некоторая ошибка .

Ниже мой код:

просмотров / тест. php

<div class="container">
        
        <h1 align="center">Ajax Form using CI</h1>

        <div class="form-group">
            
            <input type="text" class="form-control" id="name" name="name" placeholder="Name"/>
            <input type="text" class="form-control" id="age" name="age" placeholder="Age"/>
            <input type="button" class="btn btn-primary" id="save" value="SAVE DATA"> 

        </div>

    </div>

   <script type="text/javascript">

      $(document).ready(function(){

           $("#save").click(function(){

                   var name = $("#name").val();
                   var age = $("#age").val();

                   if(name != "" && age != ""){

                      $.ajax({
                        
                        type:"POST",
                        url:"<?php echo base_url('/index.php/Welcome/test'); ?>",
                        dataType: 'html',
                        data:{name:name,age:age},
                        success:function(res){
                            
                            if(res==1){
      
                                alert('Data saved successfully');   
                             }
                            else{
        
                                alert('Data not saved');    
                             }
                        },
                        error:function(){
                            alert('Some error');
                        }  

                      });
                   }
                   else{
                     alert("Field is empty");
                   }
          });
      });

   </script>     

контроллеры / добро пожаловать. php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

public function loadForm(){

    $this->load->view('test');
}

public function test(){

    $data = array(

       'name'=> $this->input->post('name'),
       'age'=> $this->input->post('age')
    );

    $this->load->model('UserModel');
    $result = $this->UserModel->saveData($data);
  }
}

модели / UserModel. php

class UserModel extends CI_Model{

   public function saveData($data){

      if($this->db->insert('users',$data)){
              return 1;
          }
          else{
          return 0;
        }
      }
  }

Кто-нибудь, пожалуйста, дайте мне знать, что не так с кодом. Любая помощь будет принята с благодарностью.

СПАСИБО

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Вот окончательное решение, и оно работает нормально.

просмотров / тест. php

<!doctype html>
<html class="no-js" lang="">
<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <title>Register using AJAX</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="apple-touch-icon" href="icon.png">
    <!-- Place favicon.ico in the root directory -->

   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

  <style>

       #age,.btn{
            margin-top: 20px
        }
 
  </style>  

</head>
<body>
  
    <div class="container">
        
        <h1 align="center">Ajax Form using CI</h1>

        <div class="form-group">
            
            <input type="text" class="form-control" id="name" name="name" placeholder="Name"/>
            <input type="text" class="form-control" id="age" name="age" placeholder="Age"/>
            <input type="button" class="btn btn-primary" id="save" value="SAVE DATA"> 

        </div>

    </div>

   <script type="text/javascript">

      $(document).ready(function(){

           $("#save").click(function(){

                   var name = $("#name").val();
                   var age = $("#age").val();

                   if(name != "" && age != ""){

                      
                      $.ajax({
                        
                        type:"POST",
                        url:"<?php echo base_url();?>index.php/Welcome/test",
                        dataType: 'html',
                        data:{name:name,age:age},
                        success:function(response){
                            
                           alert(response);  
                        },
                        error:function(xhr, status, error){
                 
                        console.log("readyState: " + xhr.readyState);
                        console.log("responseText: "+ xhr.responseText);
                        console.log("status: " + xhr.status);
                        console.log("text status: " + textStatus);
                        console.log("error: " + error);
                        }  

                      });  
                   }
                   else{
                     alert("Field is empty");
                   }
          });
      });

   </script> 
  </body>
</html>

контроллеры / добро пожаловать. php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Welcome extends CI_Controller {

public function loadForm(){

    $this->load->view('test');
}

public function test(){

    $data = array(

       'name'=> $this->input->post('name'),
       'age'=> $this->input->post('age')
    );

    $this->load->model('UserModel');
    $result = $this->UserModel->saveData($data);

    if($result == "added"){
        echo "yeah success";
    }
    else{
        echo "failed";
    }
  }
}

моделей / UserModel. php

<?php
  defined('BASEPATH') OR exit('No direct script access allowed');

class UserModel extends CI_Model{

public function saveData($data){

      if($this->db->insert('users',$data)){
              return "added";
          }
          else{
          return "not added";
         }    
      }
   }
 ?>

СПАСИБО

0 голосов
/ 01 августа 2020

вместо

error:function(){
    alert('Some error');
  }  

используйте это, чтобы получить настоящую ajax ошибку:

error: function(xhr, textStatus, error) {

 console.log("readyState: " + xhr.readyState);
 console.log("responseText: "+ xhr.responseText);
 console.log("status: " + xhr.status);
 console.log("text status: " + textStatus);
 console.log("error: " + error);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...