2016-02-26 163 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