2016-10-24 59 views
0

我在控制器中查詢結果,我編碼爲json。我需要將它傳遞給javascript,因爲我想使用typeahead js來自動完成搜索輸入。這是我的嘗試:如何從控制器到JavaScript獲取JSON結果

我控制器(admin.php的):

public function promotion() 
{ 
    $this->db->distinct(); 
    $this->db->select("from_email"); 
    $this->db->from('booking'); 
    $query2 = $this->db->get(); 
    $results = $query2->result_array(); 
    $data['from_email'] = json_encode($results); 

    $this->template->render('admin/promotion',$data,'admin'); 
} 

我輸入搜索(要根據來自數據庫的電子郵件地址):

<input type="text" name="email" class="form-control input-lg typeahead typeahead-from-email" id="email" required="required" autocomplete="off" tabindex="1" /> 

的Javascript:

var emails = new Bloodhound({ 
    datumTokenizer: function (d) { 
     return Bloodhound.tokenizers.whitespace('from_email'); 
    }, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    prefetch: base_url + 'admin/promotion' 
}); 
$('.typeahead-from-email').typeahead({ 
     hint: true, 
     highlight: true, 
     minLength: 3 
    }, 
    { 
     name: 'from_email', 
     displayKey: 'from_email', 
     source: from_email 
    }); 

這不起作用。

+0

什麼是預期的結果[ 'FROM_EMAIL'] = json_encode($結果) ;'? – guest271314

+1

我希望那些不是真正的電子郵件地址... –

+0

問題可能是您正在返回一個呈現頁面,而不僅僅是JSON本身。 「管理/促銷」模板產生了什麼? –

回答

0

不需要調用視圖或模板

public function promotion() 
{ 
    $this->db->distinct(); 
    $this->db->select("from_email"); 
    $this->db->from('booking'); 
    $query2 = $this->db->get(); 
    $results = $query2->result_array(); 
    echo json_encode($results); //<-- Just echo the json result 
} 

然後,在JavaScript`$數據

prefetch: <?php echo base_url('admin/promotion'); ?> 
+0

你是對的,我只需要一個新的函數來編碼查詢結果。謝謝:) – may

1

請先試着檢查您的打字頭是否正在工作,然後嘗試搜索「Ala」或「Cal」。我會根據您的回覆更新我的答案。

var emails = new Bloodhound({ 
    datumTokenizer: Bloodhound.tokenizers.whitespace, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    local: ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California'] 
}); 

$('.typeahead-from-email').typeahead({ 
    hint: true, 
    highlight: true, 
    minLength: 3 
}, 
{ 
    name: 'from_email', 
    source: emails 
}); 
+0

它不工作:(它也沒有給我錯誤 – may

+0

你使用chrome開發工具嗎?如果是,然後監視你的網絡標籤,同時在你的鍵入輸入上鍵入,看看它是否實際上查詢你的服務器 –

+0

是的,即時使用鉻,但它顯示我沒什麼,當我輸入搜索 – may

相關問題