2016-10-24 27 views
0

jsonにエンコードされたコントローラーにクエリ結果があります。 typeahead jsを使用して検索入力を自動補完したいので、javascriptに渡す必要があります。コントローラーからJavaScriptにJSON結果を取得するには

マイコントローラ(Admin.php):これは私の試みです

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

Javascriptを::

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'); 
} 

マイ入力された検索(データベースからの電子メールアドレスに基づいて検索するために)

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

; '? – guest271314

+1

私はそれらが本物の電子メールアドレスではないことを願っています... –

+0

多分JSON自体ではなくレンダリングページを返すことに問題があるかもしれません。テンプレート "admin/promotion"は何を生成しますか? –

答えて

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

に入力を開始function'' typeahead.bundle.min.js'ないが、私はちょうどクエリ結果をエンコードする1つの新しい関数が必要です。ありがとう:) – may

1

あなたの先読みが実際に機能しているかどうかをまず確認してから、「Ala」または「Cal」を検索してみてください。あなたの回答に基づいて回答を更新します。 `$データの結果[ 'FROM_EMAIL'] = json_encode($結果)期待されている何その後

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

あなたは?クロームのdevのツールを使用しないエラーを与えませんが、:(いずれか働いていませんそれは私が、私はこのエラーを得た –

+0

はい、イムを照会だかどうかを確認した場合にも、 – may

関連する問題