2012-06-27 44 views
0

在以下基於Ajax的搜索框中,如果該字符在位置0,則數組中的相應名稱不會返回,但對於其他位置的字符,則一切正常。請解決這個問題...Ajax php搜索中的錯誤

PHP

$query = $_GET['query']; 

$names = array('abc', 'hello', 'cool', 'fun', 'demo', 'test'); 
foreach($names as $name) 
{ 
$str = strpos($name, $query); 

if(!empty($str)) 
{ 
    echo "$name "; 

} 

} 

HTML

<form name='myForm'> 
Name: <input type='text' onblur="ajaxFunction(this.value);" name='username' /> <br /> 
Time: <input type='text' disabled="disabled" name='time' /> 
</form> 

AJAX

function ajaxFunction(val) { 
var ajaxRequest; 

try { 
    //Opera, Safari and Firefox xml object 
    ajaxRequest = new XMLHttpRequest(); 
} catch(e) { 
    try { 
     //Internet Explorer xml object 
     ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch(e) { 
     try { 
      //Old browser's xml object 
      ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");     
     } catch(e) { 
      return false; 
     } 
    } 

} 

ajaxRequest.onreadystatechange = function(){ 
    if(ajaxRequest.readyState == 4){ 
     document.myForm.time.value = ajaxRequest.responseText; 
    } else { 
     //do nothing 
    } 
} 
ajaxRequest.open("GET", "names.php?query="+val, true); 
ajaxRequest.send(null); 
} 
+0

你能告訴我什麼是返回是爲了什麼?並在哪個輸入示例不工作? –

+0

示例:如果鍵入'a',則值abc不會從名稱數組返回...... –

+0

@BhavinRana但對於'b'或'c'它返回'abc',與其他名稱相同...... –

回答

1

您可以使用下面的 -

if($str !== FALSE) 
{ 
    echo "$name "; 
} 
+0

'!=='做什麼? –

+0

工程就像一個魅力... –

+0

有關信息,請參見http://php.net/manual/en/function.strpos.php – skos

1

這也許是0值由strpos(它返回一個整數)返回的。 ..我的意思是「如果」聲明可能將其視爲錯誤。

嘗試比較喜歡

if(strpos($name, $query) === false){ .... do something..... } 
+0

是,使用類型比較。 –