【问题标题】:Using MYSQL query data with jQuery Autocomplete使用带有 jQ​​uery 自动完成功能的 MYSQL 查询数据
【发布时间】:2014-06-21 04:39:56
【问题描述】:

我正在尝试使用 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"]);
}

【问题讨论】:

  • 如果 PHP 中有一些函数可以“打印关于变量的人类可读信息”或“转储关于变量的信息”,那就太好了。这样您就可以看到数组的内容,而不仅仅是变量是一个数组。也许通过将该函数的输出捕获为字符串,然后传递给 console.log。

标签: php jquery mysql autocomplete phpmyadmin


【解决方案1】:

这个问题很老了,但我将介绍两个最有可能的解决方案。你遇到的问题是你试图回显一个数组来查看它的内容,这是不可能的。 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};"; 执行相同的操作

【讨论】:

    猜你喜欢
    • 2013-06-02
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    相关资源
    最近更新 更多