0

次のAjaxベースの検索ボックスでは、文字が位置0にある場合、配列内のそれぞれの名前は返されませんが、他の位置にある文字の場合はすべて正常に機能します。これを修正してください...

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); 
}
4

2 に答える 2

1

これは、strposによって返される0の値(整数を返す)の可能性があります...つまり、「if」ステートメントはそれをfalseとして評価できることを意味します。

次のように比較してみてください

if(strpos($name, $query) === false){ .... do something..... }
于 2012-06-27T12:35:00.547 に答える
1

あなたは以下を使うことができます-

if($str !== FALSE)
{
   echo "$name ";
}
于 2012-06-27T12:38:11.217 に答える