2012-04-29 4 views
2

J'ai un champ de saisie semi-automatique jQuery avec ce code:jQuery autocomplete travailler avec la source PHP

var tags = ["a", "ab", "abc", "abcd", "adbce", "abcdef", "abcdefg", "abcdefgh", "abcdefghi", "abcdefghij", "abcdefghijk", "abcdefghijkl", "abcdefghijklm", "abcdefghijklmn", "abcdefghijklmno", "abcdefghijklmnop", "abcdefghijklmnopq", "abcdefghijklmnopqr", "abcdefghijklmnopqrs", "abcdefghijklmnopqrst", ]; 
     $("input#name").autocomplete({ 
     position: { 
      offset: "0 -10px", 
     }, 
     source: tags 
     }); 

Il a travaillé correctement avec le tableau « balises » comme données d'entrée de l'échantillon.

Maintenant, j'ai besoin d'un ensemble de résultats de requête MySQL au lieu de ce tableau d'échantillons. Ce que je l'ai fait était de changer l'appel de fonction à ceci:

$("input#name").autocomplete({ 
     position: { 
      offset: "0 -10px", 
     }, 
     source: "http://absolutepathtofile/autosuggest.php" 
     }); 

J'utilise un chemin absolu pour être sûr que je ne faisais pas une erreur stupide, parce que je ne peux pas obtenir le retour dans la saisie semi-automatique du fichier. J'ai été à la documentation de jQuery et ai trouvé quelques exemples d'utilisation de PHP/MySQL pour retourner les résultats pour la saisie semi-automatique mais je n'arrive pas à le faire fonctionner.

C'est ce que j'ai essayé dans autosuggest.php:

$term = $_REQUEST['term']; 
$query = "SELECT * FROM merchants WHERE business_name LIKE '%$term%'"; 
$result = mysql_query($query); 

$k=0; 
while($row=mysql_fetch_array($result)){ 

    $aUsers[$k]=$row['business_name']; 
    $k++; 

} 

echo json_encode($aUsers); 

je l'ai fait aussi simple que possible, mais cela n'a pas fonctionné.

Je testé pour voir si le JSON a été envoyé à tous si je l'ai fait:

$array[0]="test"; 
$array[1]="test1"; 

echo json_encode($array); 

Et ça ne marche pas. Je ne peux pas trouver ce problème n'importe où, qu'est-ce que je fais mal? La version PHP est 5.3.10 et elle a json_encode (utilisée avant).

+2

Essayez d'utiliser Firebug ou console chromée pour voir s'il y a des javas Erreurs de requête cript/http. http://getfirebug.com/. Ce sont des outils indispensables pour écrire js. Si vous ne pouvez pas le comprendre, alors essayez de mettre en place un cas de test sur http://www.jsfiddle.net – rgvcorley

+0

Il n'y a pas d'erreurs Javascript, j'ai vérifié avec firebug déjà. – jovan

+0

Votre code semble avoir une vulnérabilité d'injection SQL. –

Répondre

1
$.ajax({ 
    url:"http://absolutepathtofile/autosuggest.php", 
    type:"post", 
    success:function(html){ 
     $("#user_phone").autocomplete(
      {position: {offset: "0 -10px"}, 
      source: html 
     }); 
    } 
}); 
  • travail greate pour moi et testé
0

J'ai écrit ce script personnalisé pour obtenir des listes déroulantes fonctionnant dans notre code lorsque nous n'avions pas json_encode disponible, j'espère que cela vous aidera à travailler sur quelque chose. La fonction 'get_xref_values ​​()' construit simplement un tableau à partir des paramètres fournis, et le GET - 'term' - est le texte dans votre boîte de texte autocomplete, il est ajouté automatiquement par le contrôle. Le code 'click' rend la liste déroulante de saisie semi-automatique automatique quand un utilisateur clique dessus, ainsi que quand il tape.

Voici le jquery:

$("#libraryEventAspectRatio").autocomplete({ 
    source: "/dropDowns/autoXref.php?category=" + "aspectratio", 
    matchContains: true, 
    minLength: 0 
}).click(function(){ 
    $("#libraryEventAspectRatio").autocomplete('search', $(this).val()); 
}); 

et voici le php:

//this page creates simple data for a drop down box to use (jquery's UI autocomplete) 

$category  = get_input_get("category"); 
$description = get_input_get("term"); 
$select_field = get_input_get("selectField"); 
$select_value = get_input_get("selectValue"); 

$order_by  = "description"; 

$xref_data  = get_xref_values($category, $order_by, $description, $select_field, $select_value); 

$str = "["; 

foreach ($xref_data as $row): 
    $str .= '"' . $row['description'] . '",'; 
endforeach; 

//chop off the last comma 
if (count($xref_data)) { 
    $str = substr($str,0,-1); 
} 

$str .= "]"; 

echo $str;