【问题标题】:PHP json_encode in autocomplete自动完成中的 PHP json_encode
【发布时间】:2016-10-06 23:20:18
【问题描述】:

我有

<form action='' method='post'>
  City name <br /><br />
  <input type='text' name='search' value='' class='auto'>
</form>

<script type="text/javascript">
  $(function() {

    //autocomplete
    $(".auto").autocomplete({
        source: "search.php",
        minLength: 1
    });

  });
</script>

这是自动完成。现在我在 search.php 文件中接收来自 MySQL 库的字段:

if(isset($_GET['term']))
    {
        $city = array();
        $airport = array();
        $citysearchsql = mysqli_query(db(),"SELECT * FROM citycode WHERE cityname LIKE '%".$_GET['term']."%' ");
        while($citysearchresult = mysqli_fetch_array($citysearchsql))
        {



            $airnamesql = mysqli_query(db(),"SELECT * FROM airports WHERE citycode='".$citysearchresult['citycode']."' ");
            while($airnameresult = mysqli_fetch_array($airnamesql))
            {
                $airport[] = $airnameresult['airportname'];
            }
            $city[] = $citysearchresult['cityname'];
        }




        echo json_encode($city);

    }

Base 有两个表 citycodeairports。用户写城市名时,需要显示城市名,城市名下显示机场名,像这里

http://joxi.ru/krD8oY1u0Nb0kr

json_encode 做不到。

任何想法,任何人都可以帮助我

【问题讨论】:

    标签: php json


    【解决方案1】:

    在数组中获取所有需要的元素,然后您可以在前端使用自己的自定义数据格式并通过简单地覆盖默认焦点和选择操作来显示。

    $("#autocomplete").autocomplete()
    .data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append( item.label )
            .appendTo( ul );
    };
    

    Check this link for demo example

    【讨论】:

      【解决方案2】:

      优化为只有一个查询:

      if (isset($_GET['term'])) {
              $city = array();
              $citysearchsql = mysqli_query(db(),"SELECT a.airportname, c.cityname FROM citycode c INNER JOIN airports a ON c.citycode = a.citycode WHERE c.cityname LIKE '%".$_GET['term']."%' ORDER BY c.citycode ASC");
              while($citysearchresult = mysqli_fetch_array($citysearchsql))
              {
                  if (!in_array($citysearchresult['cityname'], $city)) {
                      $city[] = $citysearchresult['cityname'];
                  }
                  $city[] = $citysearchresult['airportname'];   
              }
              echo json_encode($city);
      }
      

      【讨论】:

      • 感谢您的解决方案有效,但我需要以某种方式对其进行样式化,例如:joxi.ru/krD8oY1u0Nb0kr 我已经尝试使用 html 标签,如 &nbsp,但它不起作用。
      【解决方案3】:

      是的,你可以...只是合并表

      echo json_encode(array_merge($city, $airport));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-16
        • 2011-02-14
        • 2011-10-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多