使用PHP和jQuery修改数组以输出JSON

使用PHP和jQuery修改数组以输出JSON,php,jquery,mysql,autocomplete,Php,Jquery,Mysql,Autocomplete,我目前正在和 他们在演示中提供的代码是: <?php $q = strtolower($_GET["q"]); $items = array( "Peter Pan"=>"peter@pan.de", "Molly"=>"molly@yahoo.com", ); $result = array(); foreach ($items as $key) { if (strpos(strtolower($key), $q) !== false) { a

我目前正在和

他们在演示中提供的代码是:

 <?php
 $q = strtolower($_GET["q"]);
 $items = array(
"Peter Pan"=>"peter@pan.de",
"Molly"=>"molly@yahoo.com",
 );

  $result = array();
  foreach ($items as $key) {
   if (strpos(strtolower($key), $q) !== false) {
    array_push($result, array(
        "name" => $key
      ));
     }
  }
echo json_encode($result);
 ?> 
这是我的jQuery/Javascript:

    $("#email").autocomplete('emails.php', {
    multiple: false,
    dataType: "json",
    parse: function(data) {
        return $.map(data, function(row) {
            return {
                data: row,
                value: row.name,
                result: row.name
            }
        });
    },
    formatItem: function(item) {
        return format(item);
    }
}).result(function(e, item) {
    $("#content").append("<p>selected " + format(item) + "</p>");
});
});

任何关于正确设置查询的帮助都是非常特别的。谢谢

我认为之所以会出现这种情况,是因为您使用的是json中转换的数组,然后您也需要在jquery结果中使用数组的方式。或者,您可以不使用json而生成json字符串,格式为:“[{name:john,year:2009},{name:tom,year:2000},…]”

您的jquery很好。几个小时后,我发现触发错误的是“format”函数中的格式设置

如果你看一下下面的源代码

您将看到以下看似无关紧要的函数

function format(mail) {
    return mail.name + " &lt;" + mail.to + "&gt";
}
如果您省略了“小于”和“大于”表示,那么您可能得到了

value is undefinded
在控制台中循环通过第一条记录后出错。出于某种奇怪的原因,“小于”和“大于”符号很重要。确保将它们保存在格式化函数中

function format(mail) {
    return mail.name + " &lt;" + mail.to + "&gt";
}
value is undefinded