【问题标题】:Autocomplete show an undefined list自动完成显示未定义的列表
【发布时间】:2014-08-12 06:54:33
【问题描述】:

我一直在使用 jQuery UI Autocomplete 从数据库中提出建议并自动完成其余字段。 这是我的代码。

HTML:

<form action="#" method="post">
 <p><label for="kdbr">KDBR</label><br />
     <input type="text" name="kdbr" id="kdbr" value="" /></p>
 <p><label for="nmbr">NMBR</label><br />
     <input type="text" name="nmbr" id="nmbr" value="" /></p>
</form>

Javascript:

$(function() {
        //clear values on refresh
        $('#nmbr').val("");

        $("#kdbr").autocomplete({
            source: "<?php echo base_url();?>js/coba3.php",
            minLength: 3,
            select: function(event, ui) {

                $('#nmbr').val(ui.item.nmbr);

            }
        });
    });

PHP:

<?php 
$dbhost = 'HOST';
$dbuser = 'USERNAME';
$dbpass = 'PASSWORD';
$dbname = 'TBNAME';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);

$return_arr = array();

/* If connection to database, run sql statement. */
if ($conn)
{
    $fetch = mysql_query("SELECT * FROM tb_master_barang where kdbr like '%" .mysql_real_escape_string($_GET['term']) . "%'");

/* Retrieve and store in array the results of the query.*/
while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
    $row_array['kdbr'] = htmlentities(stripslashes($row['kdbr']));
    $row_array['nmbr'] = $row['nmbr'];

    array_push($return_arr,$row_array);
}
}

mysql_close($conn);

echo json_encode($return_arr);
?>

下拉列表显示来自 kdbr 的未定义值列表。我已经单独运行了 php,它返回了这个值:

[{"kdbr":"950.00.0002","nmbr":"PAKAIAN DINAS KS"},{"kdbr":"950.01.0000","nmbr":"BARANG SCURITY LSNG.PAKAI"},{"kdbr":"950.01.0001","nmbr":"PECI"},{"kdbr":"950.01.0002","nmbr":"KOPEL REM HITAM"},{"kdbr":"950.01.0003","nmbr":"SEPATU PDH"},{"kdbr":"950.01.0005","nmbr":"ROMPI SATPAM"},{"kdbr":"950.01.0006","nmbr":"SEPATU PDL"},{"kdbr":"950.01.0007","nmbr":"TALI KOOR & PLUIT"},{"kdbr":"950.01.0008","nmbr":"PAKAIAN TAHAN API"},{"kdbr":"950.01.0009","nmbr":"HELM TAHAN API"},{"kdbr":"950.02.0001","nmbr":"KAOS SCURITI PNJG\/BED\/LOG DLL"}]

谁能告诉我哪里做错了?

【问题讨论】:

  • 你的javascript是从php文件运行的吗?
  • 不,我将javascript放在html部分的&lt;script&gt;标签中,javascript调用php文件来创建json数据以提出自动完成的建议
  • console.log(ul) 请先在jquery select函数中发布日志
  • @AghaUmairAhmed :它什么也不返回
  • 看这个例子http://stackoverflow.com/questions/11532202/autocomplete-jquery-using-json-data

标签: php jquery database autocomplete


【解决方案1】:

您的源字段以错误的方式使用。您需要传递带有数据的数组或将加载数据的匿名函数。见documentation

这样的事情应该可以工作:

 $("#kdbr").autocomplete({
        source: function (request,  {
            var ajax_url = "<?php echo base_url();?>js/coba3.php?term=" + request.term;

            $.ajax({
                url: ajax_url,
                success: function (response) {
                    // assuming valid json
                    var data = $.parseJSON(response);
                    response($.map(data, function (obj) {
                        return {
                            label: obj.name + ': ' + obj.description,
                            value: obj.name,
                            id: obj.name
                        };
                    }));
                }
            });
        },
        minLength: 3,
        select: function (event, ui) {

            $('#nmbr').val(ui.item.nmbr);

        }
    });

【讨论】:

  • 它导致错误:Notice: Undefined index: term sql 查询中使用的术语丢失
  • 我不是来给你写代码的。我给了你一个示例代码,它取自我提供的文档链接,并适应了你的代码,没有实际环境我无法测试它。你需要自己弄清楚。祝你好运
  • 我知道,并且仍然尝试找出为什么它没有加载,同时尝试使用已经给出的另一个答案的可能性,谢谢你 insanebits :)
  • javascript 已加载,但仍返回未定义列表并在字段中插入undefined 值而不是kdbr..仍在处理它〜
【解决方案2】:

试试这个,

  select: function(event, ui) {
          jQuery.get(ui.item.nmbr);
        }

【讨论】:

  • 抱歉,但列表仍然显示undefined 而不是kdbr
猜你喜欢
  • 2017-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 2012-03-12
  • 1970-01-01
相关资源
最近更新 更多