【发布时间】: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