2010-08-12 8 views
0

J'ai table MySQL comme ceci:Jquery autocomplete

country | city_accented | latitude | longitude | 
--------------------------------------------------------- 
australia | sydney  | -33.8833333 | 151.2166667 | 
    USA | dallas  | 35.3163889 | -81.1763889 | 

J'utilise jquery autocomplete pour obtenir les noms de pays dans le champ texte de formulaire. Comment puis-je publier avec cette fonction Jquery toutes les autres données de la base de données (latitude, longitude, ...) à mon formulaire et l'utiliser comme un champ caché?

Le code Jquery:

function lookup(inputString) { 
if(inputString.length == 0) { 
    // Hide the suggestion box. 
    $('#suggestions').hide(); 
} else { 
    $.post("rpc.php", {queryString: ""+inputString+""}, function(data){ 
     if(data.length >0) { 
      $('#suggestions').show(); 
      $('#autoSuggestionsList').html(data); 
     } 
    }); 
} 
} // lookup 

function fill(thisValue) { 
$('#inputString').val(thisValue); 
$('#suggestions').hide(); 
} 

HTML:

<input size="30" id="inputString" onkeyup="lookup(this.value);" type="text" /> 
<div class="suggestionsBox" id="suggestions" style="display: none;"> 
<div class="suggestionList" id="autoSuggestionsList"></div> 

PHP:

if(isset($_POST['queryString'])) { 
$queryString = $_POST['queryString'];  
if(strlen($queryString) >0) { 
$query = "SELECT * FROM cities WHERE city_accented LIKE '$queryString%' LIMIT 10"; 
$result = mysql_query($query) or die("There is an error in database"); 
while($row = mysql_fetch_array($result)){ 
echo '<li onClick="fill(\''.$row['city_accented'].'\');">'.$row['city_accented'].','.$row['country'].' </li>';           
} 
} 
} 

Répondre

0

Plutôt que de revenir afficher le code html je voudrais juste poster l'objet JSON en arrière et construire la html nécessaire sur le côté client. Ainsi, vous pouvez obtenir votre tableau arrière de l'appel mysql puis de les soumettre:

$return_results = array(); 

while($row = mysql_fetch_array($result)) 
{ 
$return_results[] = $row;      
} 

echo json_encode($return_results); 

Puis dans le code javascript vous pouvez travailler avec ce tableau pour faire ce que vous voulez avec les données. Créez les éléments li. Créez des champs cachés avec des données. Peu importe.