使用MYSQL查询数据与jQuery自动完成

时间:2014-05-05 00:00:28

标签: php jquery mysql autocomplete phpmyadmin

我正在尝试使用MYSQL查询数据, 然后使用jQuery的自动完成功能将其链接到<input>

我还不习惯在Javascript中使用PHP,所以我不确定如何获取内容 在一个数组内。当每个console.log我的PHP用于调试时,它会显示Array

这是我的JS代码:

var SOMETHING = ["<?php echo $SOMETHING; ?>"];
//console.log(SOMETHING);
$( "#input_add_album" ).autocomplete({
  source: SOMETHING
});

这是我的PHP代码:

global $SOMETHING;
$SOMETHING = array();
$sql = "
    select B from A
";
$stmt = $dbh->query($sql);
$result = $stmt->fetchAll();
foreach ($result as $SOME_CONTENT) {
    array_push($SOMETHING, $SOME_CONTENT["SOME_CONTENT"]);
}

1 个答案:

答案 0 :(得分:0)

这个问题已经过时了,但我将讨论两个最有可能的解决方案。你遇到的问题是你试图回应一个数组以查看它的内容,这是不可能的。 JavaScript解释器也不可能解释PHP。 PHP处理主机上的.php文件,然后将它们提供给客户机。客户端永远不应该看到任何PHP,它不知道如何处理它。因此,从服务器运行PHP文件后的最终结果必须是格式良好的文档,以符合浏览器可以处理的文件类型的指导,在本例中为html和JavaScript。因此,为了使用JavaScript将PHP变量的内容记录到控制台,它必须采用JavaScript理解的形式。幸运的是,有一种JavaScript可以理解并且大多数其他语言支持的格式。将任何字符串,数字,数组或关联数组移动到JS的方法是使用JSON。 JavaScript对象表示法。请记住,PHP中的关联数组成为JavaScript中的对象。

$regular_array = json_encode(array( 'words', 'to', 'send' ));
$php_assoc = json_encode(array(
    'assoc'   => 'arrays',
    'become'  => 'JavaScript',
    'objects' => array(
        'this','will','be',1,array()
    ),
));
echo "
    <script>
        /** Check that window.console.logs isn't undefined, if we were just
         * using JavaScript I wouldn't be so verbose. Since our PHP variable is
         * traveling so far from home, I want to make sure we get the right address
         */
        if (window && 'console' in window ) {
            window.console.log({$regular_array});
            window.console.log('JS object with array inside', {$php_assoc});
        }
    </script>";

这会将值记录到浏览器控制台。这相当于使用常规的旧JavaScript将以下数组和对象记录到控制台。

var regularArray = [ 'words', 'to', 'send' ];

var phpAssoc = {
    assoc   : 'arrays',
    become  : 'JavaScript',
    objects : [ 'this', 'will', 'be', 1, [] ]
};

在Google Chrome中,phpAssoc对象在控制台中如下所示。它可以像任何其他JavaScript对象一样完全展开,查看和使用。

Object {assoc: "arrays", become: "JavaScript", objects: Array[5]}

*在这个例子中,我没有将PHP输出保存到JavaScript变量中,但您可以看到如何将值注入console.log,这样您就可以使用echo "var something = {$some_other_thing};"; <执行相同的操作/ p>