【问题标题】:JQuery Autocomplete returns all results in one stringJQuery Autocomplete 在一个字符串中返回所有结果
【发布时间】:2017-02-15 13:43:53
【问题描述】:

我目前正在为我的一种表单中的文本输入制作一个 jQuery 自动完成功能。我现在正在使用 Codeigniter。

这是我的模型代码

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();

}

这是我的控制器

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

现在它显示了这些数据 here is the image

希望你能帮助我。谢谢!

【问题讨论】:

  • 我很困惑,你说它在一个字符串中返回所有结果。通过你的代码,看起来是你把它变成了一个字符串? names += ',"'+value.name+'"';

标签: javascript php jquery autocomplete


【解决方案1】:

根据现有代码,您创建一个字符串names += ',"'+value.name+'"';。根据理解,您需要创建一个数组,以便可以使用.map()

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

【讨论】:

  • 谢谢伙计。有效。我不能投票,因为我的声誉不符合投票要求。这个问题困扰了我好几个小时。再次感谢你。给你更多的力量!
【解决方案2】:

如果您希望它是一个数组,如果您想更改自己的代码,请尝试以下操作:

$(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;
});

【讨论】:

    猜你喜欢
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2014-05-28
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多