2011-05-06 1 views
-1
<script type="text/javascript"> 
    function showHint(str) { 
     if (str.length == 0) { 
      document.getElementById("txtHint").innerHTML = ""; 
      return; 
     } 
     if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else { // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp == 4 && xmlhttp.status == 200) { 
       document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
      } 
     } 
     xmlhttp.open("GET", "gethint.php?q=" + str, true); 
     xmlhttp.send(); 
    } 
</script> 


<form> 
    First name: <input type="text" onkeyup="showHint(this.value)" size="20" /> 
</form> 
<span id="txtHint"></span> 
------------------------------------- 


<?php 

$a[]="Anna"; 
$a[]="Wenche"; 
$a[]="Vicky"; 

//get the q parameter from URL 
$q=$_GET["q"]; 

//lookup all hints from array if length of q>0 
if (strlen($q) > 0) 
    { 
    $hint=""; 
    for($i=0; $i<count($a); $i++) 
    { 
    if (strtolower($q)==strtolower(substr($a[$a],0,strlen($q)))) 
     { 
     if ($hint=="") 
     { 
     $hint=$a[$i]; 
     } 
     else 
     { 
     $hint=$hint." , ".$a[$i]; 
     } 
     } 
    } 
    } 

// Set output to "no suggestion" if no hint were found 
// or to the correct values 
if ($hint == "") 
    { 
    $response="no suggestion"; 
    } 
else 
    { 
    $response=$hint; 
    } 

//output the response 
echo $response; 
?> 
+0

Qu'est-ce qui ne fonctionne pas? Lorsque vous regardez Fiddler ou Firebug, voyez-vous un appel Ajax sur le serveur? Voyez-vous des erreurs dans la console? – epascarello

+0

L'erreur est-elle sur le serveur ou sur le client? Avez-vous fatigué d'appeler directement l'url que vous faites l'appel Ajax dans le navigateur? Est-ce que ça marche? Vous devez identifier le point où il se casse. – epascarello

+0

vérifier l'appel et la réponse de Firebug, le code est très bien. – booota

Répondre

3

Essayez de changer cette ligne

if (strtolower($q)==strtolower(substr($a[$a],0,strlen($q)))) 

à

if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))) 
+0

Pensez que nous avons un gagnant ici! :) – epascarello

-2
<form> 
    FirstN<input type="text" onkeyup="return showHint(this.value);" size="20" /> 
</form> 
+0

ok ... Merci mon pote .... – Partyboy

+0

Pourquoi auriez-vous à faire cela? Un bon programmeur l'ajouterait discrètement et il n'y a pas besoin d'une déclaration de retour, sauf si vous devez annuler l'événement que vous pouvez faire à travers l'objet de l'événement lui-même. – epascarello

+0

Prêt à parier que cette réponse n'a pas fait fonctionner magiquement le code de l'affiche. – epascarello

0
if (xmlhttp == 4 && xmlhttp.status == 200) { 
Should BE 
if (xmlhttp.readyState==4 && xmlhttp.status==200) 

--------------------------- 

if (strtolower($q)==strtolower(substr($a[$a],0,strlen($q)))) 
Should BE 
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))) 
0

Je pense que l'erreur se produit sur

strtolower(substr($a[$a],0,strlen($q)))) 

Voici ce que $ a [$ a] ..? Ressembles à exécuter pour la boucle Ensuite

for($i=0; $i<count($a); $i++) 
    { 
    if (strtolower($q)==strtolower(substr($a[$a],0,strlen($q)))) 

s'il vous plaît changer comme ça

for($i=0; $i<count($a); $i++) 
    { 
    if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q)))) 

$ remplacer par un i $, alors que le $ a [] travaille

Questions connexes