Php 通过查询数据库帮助ajax自动完成
我脑海中浮现的问题是,我的查询是从数据库返回值,还是在代码中遗漏了什么。我一直想弄明白,但我无法理解 print\r($tagnames)不会在屏幕上打印任何内容 此代码是控制器的一部分Php 通过查询数据库帮助ajax自动完成,php,model-view-controller,codeigniter,Php,Model View Controller,Codeigniter,我脑海中浮现的问题是,我的查询是从数据库返回值,还是在代码中遗漏了什么。我一直想弄明白,但我无法理解 print\r($tagnames)不会在屏幕上打印任何内容 此代码是控制器的一部分 function get_Names() { // Convert the string to the lowercase $q = strtolower($this->input->post('q', TRUE)); if(!
function get_Names() {
// Convert the string to the lowercase
$q = strtolower($this->input->post('q', TRUE));
if(!$q) {
return;
}
$tagnames[] = $this->autocomplete_model->getData();
print_r($tagnames);
echo json_encode($tagnames);
}
我有autocomplete_model.php,这段代码是模型的一部分
class Autocomplete_model extends CI_Model {
public function __construct() {
parent::__construct();
}
function getData() {
$q = $this->db->query("SELECT * FROM tags");
if($q->num_rows() > 0) {
foreach($q->result() as $row) {
$data[] = $row->tag_name;
}
return $data;
}
}
}
我的视图中有以下代码
$(document).ready(function() {
$(function() {
$( "#tagname" ).autocomplete({
source: function(request, response) {
$.ajax({ url: "<?php echo site_url('generator/get_Names'); ?>",
data: { term: $("#tagname").val()},
dataType: "json",
type: "POST",
success: function(data){
response(data);
}
});
},
minLength: 2
});
});
});
$(文档).ready(函数(){
$(函数(){
$(“#标记名”).autocomplete({
来源:功能(请求、响应){
$.ajax({url:“”,
数据:{term:$(“#标记名”).val()},
数据类型:“json”,
类型:“POST”,
成功:功能(数据){
答复(数据);
}
});
},
最小长度:2
});
});
});
提前感谢。看起来您的AJAX调用正在将“term”作为post数据发送,但是您的get_Names()方法正在查找post参数“q”。更改其中一个,我认为您应该很好。如果您没有在
print\r($tagnames)
中打印任何东西,那么请确保您没有从数据库中获得任何东西,首先检查它,然后查看客户端代码。在foreach循环print$row->tag\u name
中,让我知道它打印的是什么?它不打印任何东西。我们可以从模型中打印吗?这与MVC的设计实践相违背,但是为了测试它的正确性<代码>打印($q)循环前打印什么?我猜模型中有问题。它没有打印模型中的任何内容。我尝试了echo“hello”
,但屏幕上甚至没有打印出来。我猜模型加载不正确。是的,我已将“q”更改为“term”,我认为服务器有一些响应,但当我在输入字段中输入一些文本时,firebug显示500内部服务器错误。我的第一个想法是您有一个打印器和一个输出JSON结果的回音。但我不认为这会导致500个错误。500错误表示服务器有问题。这可能意味着很多事情。最好检查一下日志文件,看看它们说了些什么。有时它也会被记录到Codeigniter日志中。我发现了错误,它与Codeigniter的配置文件有关。我有一个csrf滤波,它导致输出结果的错误,并导致500错误