配列から提案を取得する単純なオートコンプリート テキスト ボックスを作成しようとしています。私が使用しているコード (これに基づいて)は次のとおりです。
call.php
<?php
$list = array(
"Autocomplete",
"Metapher",
"Metatag");
for($i=0; $i<count($list); $i++){
if(strpos($list[$i], $_GET['str']) !== FALSE && strlen($_GET['str']) >= 2){
echo str_ireplace($_GET['str'], '<b style="color: red;">'.$_GET['str'].'</b>', $list[$i]) . '<br>';
}
}
?>
index.php
<!DOCTYPE html>
<html>
<head>
<title>AJAX - 03</title>
<script type="text/javascript">
var ajax = new XMLHttpRequest;
function t(){
ajax.open("GET", "call.php?str=" + document.getElementById("test").value, false);
ajax.send();
ajax.onreadystatechange=function()
{
if (ajax.readyState==4 && ajax.status==200)
{
document.getElementById("container").innerHTML = ajax.responseText;
}
}
}
</script>
</head>
<body>
<div id="container" style="border: 3px; border-style: solid; font-size: 42pt; border-radius: 7px;">
Text
</div>
<br><br>
<input id="test" type="text" onkeyup="javascript:t()">
</body>
</html>
しかし、提案ボックスには何も表示されません。構文エラーが見つからないので、ロジックに問題があると思いますか?
更新: PLB と FAngel からのアドバイスの後、私は onreadystatechange とチェックを追加しました。たとえば、入力として「com」を入力すると、オートコンプリートという単語が表示されます。ただし、「Aut」を入力すると何も表示されません。実際の問題はここにあると思います:
if(**strpos($list[$i], $_GET['str']) !== FALSE** && strlen($_GET['str']) >= 2)
私がここで読んだことからhttp://php.net/manual/en/function.strpos.php問題は != の使用である可能性がありますが、私は !== を使用する必要があります。