在PHP中为JavaScript函数生成数组

时间:2011-05-05 09:40:14

标签: php javascript

<script>

$(function() {

    var availableTags = [

        "ActionScript",

        "AppleScript",

        "Asp",

        "BASIC",

        "C",

        "C++",

        "Clojure",

        "COBOL",

        "ColdFusion",

        "Erlang",

        "Fortran",

        "Groovy"
    ];

    $( "#fname" ).autocomplete({

        source: availableTags

    });

});

上面的函数帮助我使用静态值实现自动完成,我想要的是从数据库中获取这些值。我写了一个连接到数据库的PHP函数,但我不知道如何将该函数的返回值传递给下面的javascript页面是该片段。

function getAllDrugs(){
$med = "";
$select = mysql_query("SELECT dname FROM phar_store_config where quantity > 1");

while($row =  mysql_fetch_array($select)){

$med = $med.$row['dname'];

}
return $med;
}

现在我希望将上面php函数的返回值传递给我的js函数。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

您可以使用函数json_encode()并修改您的代码:

function getAllDrugs(){
  $med = array();
  $select = mysql_query("SELECT dname FROM phar_store_config where quantity > 1");

  while($row =  mysql_fetch_array($select)){

    $med[] = $row['dname'];
  }
  return $med;
}

(这会将结果转换为名称数组而不是字符串)。 然后,您可以在标记中写入:

$(function() {

    $( "#fname" ).autocomplete({

        source: <?php echo json_encode(getAllDrugs()); ?>

    });

});

答案 1 :(得分:1)

以下是使用JSON的自动完成的示例:

$( "#fname" ).autocomplete({
    source: "autoAcc.php",
    dataType:'json',
    minLength: 0,
    delay:0,
    select: function( event, ui ) {
        $( "#fname" ).val( ui.item.classe );
        return false;
    }

}).data( "autocomplete" )._renderItem = function( ul, item ) {
    if(!item.classe) {
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append('<a style="color:red;font-weight:bold;">No result !</a>' )
            .appendTo( ul );
    } else {
    return $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append(    '<a>' + item.classe + '</a>' )
        .appendTo( ul );
    }
};

$( "#fname" ).click(function() {
    $( "#fname" ).autocomplete("search","");
});

假设classe是我要在“列表框”中显示的列。

这是我生成JSON(autoAcc.php)的PHP代码:

$requete = 'SELECT * FROM tbl_administrators';
$result = mysql_query($requete);
$rows = array();
while($r = mysql_fetch_assoc($result)) {
    $rows[] = $r;
}
echo json_encode($rows);

如果您想了解有关此代码的更多信息,我希望这对您有帮助。

答案 2 :(得分:0)

假设你正在使用jQuery。

如果将值存储为JSON数组,则可以执行$.parseJSON$.getJSON,然后将值解析为JS函数。

答案 3 :(得分:0)

$(function() {
    var availableTags = [<?="'".implode("','",getAllDrugs())."'"?>];

    $( "#fname" ).autocomplete({
        source: availableTags
    });
});