【问题标题】:codeigniter and ajax form errorcodeigniter 和 ajax 表单错误
【发布时间】:2018-08-28 11:35:36
【问题描述】:

我在使用此代码时遇到问题,我正在尝试在 codeigniter 上执行 ajax,我有一个带有用户名的表单可以选择。如果我单击一个用户,我不会从数据库中获取其他变量。 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;
 }

}

【问题讨论】:

  • 您面临什么类型的错误?添加有关您的问题的更多详细信息
  • $postData = $this->input->post('username');
  • 我尝试了Mulet的修改,还是不行,@Bilal没有错误很遗憾,我看到页面正确但是点击名字时ajax表单不起作用
  • 你需要做一些调试来追踪问题。查看浏览器开发者工具中的网络选项卡。查看 HTTP 请求。它的格式是否符合您的预期?一旦知道这一点,您就可以消除 JS 或 PHP 的问题。
  • 危险:你很容易受到SQL injection attacks的影响,你需要defend你自己。

标签: php ajax codeigniter


【解决方案1】:

为什么你使用核心 php mysql 连接功能?只需将 db 详细信息放入 database.php 并使用 CodeIgniter Query builder 进行 mysql 查询。

请检查此链接 --

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

【讨论】:

    【解决方案2】:

    数据:{“用户名”:用户名} 做这种类型

    【讨论】:

    • 属性名 username 并没有要求在对象文字中引用它。
    猜你喜欢
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多