2011-05-06 48 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

什麼是不工作?當你看着Fiddler或Firebug時,你會看到一個Ajax調用進入服務器嗎?你看到控制檯中的錯誤嗎? – epascarello 2011-05-06 09:26:44

+0

服務器上還是客戶端上的錯誤?你是否厭倦了直接調用瀏覽器中的Ajax調用的url?那樣有用嗎?你需要指出它打破的地方。 – epascarello 2011-05-06 09:38:45

+0

檢查來自Firebug的調用和響應,代碼很好。 – booota 2011-05-06 11:09:43

回答

3

嘗試改變這一行

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

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

認爲我們在這裏得到了一個勝利者! :) – epascarello 2011-05-06 09:40:46

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

好的...謝謝你的夥計.... – Partyboy 2011-05-06 09:17:56

+0

你爲什麼要這樣做?一個好的程序員會不加區別地添加它,除非需要取消事件對象本身可以執行的事件,否則不需要返回語句。 – epascarello 2011-05-06 09:25:04

+0

願意打賭,這個答案並沒有神奇地讓海報的代碼工作。 – epascarello 2011-05-06 09:28:13

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

我認爲這將發生在錯誤我的Ajax調用不工作

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

這是什麼$ a [$ a] ..?就像爲循環執行然後

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

請改變這樣

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

$以$一個替代我則只有$一個[]工作

相關問題