2016-02-26 160 views
0

所以我不是精通使用codeiginiter,但我一直在使用它一段时间了。Codeigniter AJAX数据返回空

我试图做一个SQL查询来搜索数据库中的图书,但ajax总是返回空的。

我回应了几个虚拟字符串以确保控制器和视图之间建立了正确的连接,并且确保SQL查询本身正常工作,但我不明白为什么这仍然会发生。

这是JavaScript:

$('#search').on("keyup", function() { 
search = $(this).val(); 
console.log("Search Term: " + search); 
$.ajax 
({ 
    type: "POST", 
    url: base_url + "vault/quick_search", 
    data: {search_term:search}, 
    dataType: 'json', 
    success: function(data) 
    { 
     console.log("Result: " + data); 
    }, 
    error: function(data) 
    { 
     alert("?"); 
    } 
}); 
}); 

这是控制器:

 function quick_search() 
    { 
     $search = $this->input->post('search_term'); 
     $result = $this->vault_instance->quick_search($search); 
     echo json_encode($result); 
    } 

这是模型:

 function quick_search($search_term) 
{ 
    $sql = "SELECT * FROM books WHERE title LIKE '%harr%' OR author LIKE '%harr%'"; 
    $query = $this->db->query($sql); 
    return $query->result_array; 
} 

注:对不起,穷人的编辑,这是我第一次问一个问题。 此外,在我用“harr”作为测试的模型中,我知道它不是搜索词本身,它仍然返回空

+0

但是你做了很好的代码编辑。但等待提示。 – rahul

+0

欢迎!你在本地机器上开发吗?一些浏览器具有安全措施,使Ajax变得棘手。浏览器的开发控制台中是否有错误/警告? – colonelsanders

+0

您是否检查您是否在控制台中看到任何错误 –

回答

2

你需要改变这一行:

return $query->result_array;  

随着

return $query->result_array(); 

监守result_array()是您返回结果存入数组格式的功能。

-1

不确定这是否有效,但是...尝试更改$.ajax中的数据类型致电jsonp(而不是json)。

+0

这不会改变任何东西 –

+0

AJAX现在返回错误。还有什么我需要修改jsonp的工作? –

+0

@Sushanth'jsonp'可以帮助你在没有得到由于相同域策略限制而返回的AJAX数据。 – Dxml

0

什么是您为数据库列使用的排序规则?如果不是utf8_general_ci,请尝试更改为它。

+0

函数调用问题.... result_array()chk我的答案 – devpro