【问题标题】:Array in autocomplete not showing anything自动完成中的数组未显示任何内容
【发布时间】:2014-11-27 03:26:44
【问题描述】:

这是我的 jQuery 自动完成代码:

PHP 代码:

$query = "SELECT * FROM users";
$users = db::getRecords($query);

$usernames = Array();
foreach ($users as $user) 
{
    $username[] = '"'.$user['username'].'"';
}

数组是关联的。

JS:

$("#username").autocomplete({

    source: [<?php  echo join(',', $usernames); ?>],   
    select: function(event, ui) {

    }
});

此数组$user 未转换为 JavaScript 数组。当我输入我的用户名输入时没有任何反应。如何用 PHP 数组定义源?

【问题讨论】:

  • $users 包含什么?它是什么样子的?你能显示那个变量的print_r()/var_export()吗?
  • @Ghost 我改了代码,请看一下
  • 这些都在同一个页面上吗?
  • 你检查过查询是否给出了正确的结果吗?
  • yes ofc.... 他们在同一个页面

标签: javascript php jquery mysql arrays


【解决方案1】:

如果您在同一页面中,我建议您这样做。

在 PHP 中:

$username = array();
$query = "SELECT * FROM users";
$users = db::getRecords($query);
foreach ($users as $user) {
    $username[] = array('id' => $user['id'], 'username' => $user['username'], 'label' => $user['username']);
}

$username = json_encode($username);

然后在JS上:

$("#username").autocomplete({
    source: <?php echo $username; ?>,   
    select: function(event, ui) {
        alert(ui.item.id); // alets that user id
    }
});

但强烈建议将 PHP 分开,这样你只需要在那个 PHP 中使用echo json_encode($data)

然后使用source: 'path/to/phpfile.php'的php路径。

【讨论】:

  • 酷,现在可以使用了。还有一件事,在 select: function(event, ui) 我可以找出 id 是什么
  • @MuhammadUmar 我有一个解决方案,只需几秒钟,您的数组结构需要不仅仅是一个简单的平面数组
  • 你好@MuhammadUmar 检查我的修改
猜你喜欢
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多