2017-02-15 3 views
0

私は現在、自分のフォームのテキスト入力用にjQueryオートコンプリート機能を作成しています。私は現在Codeigniterを使用しています。ここで JQueryオートコンプリートはすべての結果を1つの文字列に返します

は、ここに私のコントローラここ

public function index() 
{ 
    if($this->session->userdata('uid')) 
    { 
     $data['kudos'] = $this->KudosModel->get_kudos(); 
     $data['acc'] = $this->KudosModel->get_accounts(); 
     $data['name'] = $this->KudosModel->get_names(); 
     $this->load->view('kudoslist',$data); 
    } 
    else 
    { 
     redirect('index.php/login'); 
    } 
} 

である私はJavaScript/jQueryの

$(function(){ 
var names=""; 
"use strict"; 
    var obj = JSON.parse(<?php echo "'".json_encode($name)."'"; ?>); 
    $.each(obj, function(key, value) { 
      names += ',"'+value.name+'"'; 
    }); 
    // names += "]"; 
     var all = [names]; 
     console.log(all); 
       $("#addAmbassadorName2").autocomplete({source: all}); 
}); 

は、今ではこのデータを示している私のモデルのコード

function get_names() 
{ 
    $query = $this->db->query("SELECT CONCAT(tbl_applicant.fname, ' ', tbl_applicant.lname) AS name FROM tbl_applicant INNER JOIN tbl_employee ON tbl_employee.apid=tbl_applicant.apid INNER JOIN tbl_account ON tbl_account.acc_id=tbl_employee.acc_id WHERE tbl_account.acc_description LIKE '%Agent%' AND tbl_employee.isActive LIKE '%yes%'"); 
    return $query->result(); 

} 

ある here is the image

あなたが私を助けてくれることを願っています。ありがとう!

+0

私は混乱しています。すべての結果を1つの文字列で返すと言います。あなたのコードでは、それはあなたの人が1つの文字列にするように見えますか? '名前+ = '、" +値。名前+' "''です。 –

答えて

1

既存コードごとに、文字列names += ',"'+value.name+'"';を作成します。理解するごとに、配列を作成する必要がありますので、.map()を使用することができます。

var all = obj.map(function (value) { 
    return value.name; 
}); 
$("#addAmbassadorName2").autocomplete({source: all}); 
+0

ありがとうございました。出来た。私の評判が投票要件を満たさないので投票できません。この問題は何時間も気になっています。ありがとうございました。あなたにもっと力を! – azis

0

あなたはそれを配列にしたい場合は、独自のコードを変更したい場合は、これを試してみてください。

$(function() { 
 
    var names = []; 
 
    "use strict"; 
 
    var obj = JSON.parse(<? php echo "'".json_encode($name). 
 
    "'"; ?>); 
 
    $.each(obj, function(key, value) { 
 
    names.push(value.name); 
 
    }); 
 
    // names += "]"; 
 
    
 
    console.log(all); 
 
    $("#addAmbassadorName2").autocomplete({ 
 
    source: names 
 
    }); 
 
});

あなたが簡単な方法をしたい場合は、試してみてください。

var all = obj.map(function (value) { 
    return value.name; 
}); 
関連する問題