如何在Ajax和JSON中过滤(自定义)PHP输出

时间:2013-12-23 13:52:39

标签: php jquery ajax json jquery-autocomplete

我在MySQL表中有一个字段,其中包含地址,如:

enter image description here

我可以通过起诉这两个PHP文件(Ajax-jQuery Autocomplete Proccess)从MySql查询这个字段

  

1:GetAuto1.php

<?php
include("configPDO.php");
    $likeString = '%' . $_GET['term'] . '%';
    $STM = $dbh->prepare("SELECT Address FROM Barangays WHERE Address LIKE :likeString");
    $STM->bindParam(':likeString', $likeString);
    $STM->execute();
    $STMrecords = $STM->fetchAll();
    $Category_array = array();
    foreach($STMrecords as $row)
     {
      $result = $row[0];
      array_push($Category_array, $result); 
     }
     $json = json_encode($Category_array);
     echo $json;          
?>
  

2- GetCategories.php

<?php
$hostname = 'fdbxxxxxxxxxx';
$username = 'xxxxxxxxta';
$password = 'xxxxxxxxxxata';
$dbh = new PDO("mysql:host=$hostname;dbname=xxxxxxxxxa", $username, $password);
    $locale = $_GET['term'];
$sql = "SELECT Address FROM `Barangays` WHERE `Address` LIKE '%$locale'";
 $Product_array = array();
   foreach ($dbh->query($sql) as $row)
        {
        $result = $row[0];
  array_push($Product_array, $result);
        }
$json = json_encode($Product_array);
echo $json; 
?>
  

最后是jquery:

$(document).ready(function()
{
          $.ajax({
               url: 'Get_Categories.php',
               type: 'POST',
               dataType: 'json',
               success: function(data){
                     $('#searchg').autocomplete(
                     {
                           source: data,
                           minLength: 1   
                     });
               }
          });  
});

这段代码完全适合我,但我在这里遇到问题!。你注意到文本框上的Valuse显示自动完成如下:

  

Aqtanga,Qlmeria,Giliran,Brazile

你可以帮我修改代码输出结果(过滤它)就像

  

Aqtanga,Qlmeria,Giliran

我的意思是在“,Brazile ”之后屏蔽字符串的最后一部分为了将地址发送到谷歌地图我还需要过滤字符串的第一部分。所以对于谷歌地图我应该像:

  

Qlmeria,Giliran,Brazile

我的意思是过滤第一部分 Aqtanga,。对不起,花了这么久!感谢您提前的时间

1 个答案:

答案 0 :(得分:0)

有两个不同的步骤要做。首先,您应该覆盖_renderItem方法,如下所示。

_renderItem: function( ul, item ) {

     var address = item.label;

     return $( "<li>" )
         .append( $( "<a>" ).html( address ) )
         .appendTo( ul );
}

放在

之后
minlength:1,

这允许您使用不同的HTML来显示项目。但是,对于您的情况,它允许您根据需要修改地址。

例如,如果要删除最后一个“Brazile”,可以执行以下操作:

var address = (item.label.split(",").pop()).join(",");

实际上,在根据逗号(,)划分地址时,我将消除最后一次出现(使用pop()),并重新创建地址(使用Join())。