如何使用php将数据提供给jQuery自动完成?

时间:2010-11-23 23:35:09

标签: php jquery wordpress jquery-plugins autocomplete

我正在尝试构建一个表单,其中某些文本字段和文本区域具有自动完成功能。

我使用了强大的wordpress插件来构建我的表单。我正在使用jQuery autocomplete plugin作为自动完成部分。

代码如下所示:

<script>

            $(document).ready(function(){
                var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" ");
            $("#example").autocomplete(data);
  });
  </script>

所以基本上我需要使用php从mysql数据库中提取数据并将其提供给该数据var。我是一个php新手,所以我不知道该怎么做。在强大的插件上工作的编码人员为var数据部分建议了以下代码:

 <?php
global $frm_entry_meta;
$entries = $frm_entry_meta->get_entry_metas_for_field($field_id, $order='');
?> //db_frm_entry_metas is the name of the mysql db that stores the values for every field from the form. I suspect get_entry_metas_for_field is a function added by the formidable plugin. $field_id is the id for a given field on the form. 
var data = new Array();
<?php foreach($entries as $value){ ?>
data[] = <?php echo $value ?>;

<?php } ?>

我尝试在$ field_id的位置使用id号运行此代码,但它不起作用。我被困在这里

我能理解大部分代码,除了这一部分:

var data = new Array();
<?php foreach($entries as $value){ ?>
data[] = <?php echo $value ?>

我不知道数据[]在那里做什么......如果php将数据提供给var data = line?

我有大约15个表单text / textarea字段,每个字段都需要提取与其给定field_id相关联的数据。除非有更简单的方法,否则这意味着我必须编写15个脚本,每个脚本都有一个特定的$ field_id和带有字段的css选择器的jQuery对象。

非常感谢任何有助于此工作的帮助!

3 个答案:

答案 0 :(得分:0)

编码器错了,这个:

data[] = something;

会在JS中导致语法错误,它是将成员推送到数组的PHP简写,并且在JS中不起作用。

试试这个:

data.push(unescape('<?php echo rawurlencode($value); ?>');

答案 1 :(得分:0)

根据自动填充文档,您可以传递网址作为数据参数。话虽如此,做一些如下的事情:

<?php
  // --- PLACE AT VERY TOP OF THE SAME FILE ---
  $search = isset($_GET['q']) && !empty($_GET['q']) ? $_GET['q'] : null;
  if (!is_null($search))
  {
    $matches = Array();
    // some search that populates $matches based on what the value of $search is
    echo implode("\r\n",$matches);
    exit;
  }
?>

然后,在您的jQuery代码中将.autocomplete(data)替换为.autocomplete('<?php echo $_SERVER['PHP_SELF']; ?>');

答案 2 :(得分:0)

你的jquery会是这样的

$("#example").change(function(){
$.ajax( 
        { 
            type: "POST", 
            url: "php_page.php", 
            data: "data=" + $("#example").val(),
            beforeSend: function() {
                // any message or alert you want to show before triggering php_page.php
            },
            success: function(response) {
                eval(response);
                // print your results
            }

         });
});
获取所有信息后,在你的php页面中回显这样的结果。

echo "var result=" . json_encode($results);

然后eval(响应)jquery函数会给你javascript变量结果和你的结果。 希望这会有所帮助...