ошибка формы codeigniter и ajax - PullRequest
0 голосов
/ 28 августа 2018

У меня проблемы с этим кодом, я пытаюсь сделать ajax на codeigniter, у меня есть форма с именем пользователя для выбора. Если я нажимаю на пользователя, я не получаю другие переменные из базы данных. SQL-запрос работает нормально. Код делится на вид / контроллер / модель. Код модели, кажется, работает нормально, проблема должна быть в представлении и / или контроллере.

Я правильно визуализирую интерфейсную форму, но когда я нажимаю на имена, я не получаю вывод из запросов, явной ошибки нет.

смотреть код:

<!doctype html>
<html>
 <head>
   <title>How to send AJAX request in Codeigniter</title>
 </head>
 <body>

  Select Username : <select id='sel_user'>
   <option value='abc'>abc</option>
   <option value='ad'>ad</option>
   <option value='admin'>admin</option>
   <option value='sunil'>sunil</option>
  </select>

  <!-- User details -->
  <div >
   Username : <span id='suname'></span><br/>
   Name : <span id='sname'></span><br/>
   Email : <span id='semail'></span><br/>
  </div>

  <!-- Script -->
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script type='text/javascript'>
  $(document).ready(function(){

   $('#sel_user').change(function(){
    var username = $(this).val();
    $.ajax({
     url:'<?=base_url()?>index.php/user_ajax/userDetails',
     method: 'post',
     data: {username: username},
     dataType: 'json',
     success: function(response){
      var len = response.length;

      if(len > 0){
       // Read values
       var uname = response[0].username;
       var name = response[0].password;
       var email = response[0].email;

       $('#suname').text(uname);
       $('#sname').text(name);
       $('#semail').text(email);

      }else{
       $('#suname').text('abc');
       $('#sname').text('cde');
       $('#semail').text('');
      }

     }
   });
  });
 });
 </script>
 </body>
</html>

код контроллера:

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

class user_ajax extends CI_Controller {

 public function index(){

  // load base_url
  $this->load->helper('url');

  // load view
  $this->load->view('user_view_ajax');
 }

 public function userDetails(){
  // POST data
  $postData = $this->input->post();
  # echo $postData;
  //load model
  $this->load->model('model_ajax');

  // get data
  $data = $this->model_ajax->getUserDetails($postData);

  echo json_encode($data);
 }

}

код модели:

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

class model_ajax extends CI_Model {

 function getUserDetails($postData){

  $response = array();

  if($postData['username'] ){
    /*
   // Select record
   $this->db->select('*');
   $this->db->where('username', $postData['username']);
   $q = $this->db->get('users');
   $response = $q->result_array();
   */
    // Create connection
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "anubi";
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    #$sql = $conn->query("SELECT username, password, email from users WHERE username=".$postData['username']);
    #$response=$sql->result_array();
    $sql = $conn->query("SELECT username, password, email from users WHERE username=".$postData['username']);
    $array = array();
     while ($row = $sql->fetch_assoc()) {
        $array[] = $row;

     }
     $response=$array;
  }

  return $response;
 }

}

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

почему вы используете основные функции php mysql connect? просто поместите детали базы данных в database.php и используйте конструктор запросов CodeIgniter для запросов mysql.

Пожалуйста, проверьте эту ссылку -

https://www.codeigniter.com/userguide3/database/query_builder.html#selecting-data

0 голосов
/ 28 августа 2018

данные: {"имя пользователя": имя пользователя} сделать этот тип

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