gpt4 book ai didi

php - ajax 从数组自动完成

转载 作者:行者123 更新时间:2023-12-02 22:32:04 24 4
gpt4 key购买 nike

我正在尝试创建一个简单的自动完成文本框,它从数组中获取建议。我正在使用的代码(基于 this)是:

调用.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>';
}
}

?>

索引.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 和检查。但是它仍然不能正常工作。实际上我只是发现,如果您键入 3 个单词中的一个字母的组合,建议就会正确出现。如果您键入单词的起始字母,它就不起作用。例如,如果我输入“com”,则会出现“自动完成”一词。但是,如果我输入“Aut”,则什么也没有。所以我想实际问题在这里:

if(**strpos($list[$i], $_GET['str']) !== FALSE** && strlen($_GET['str']) >= 2)

从我在这里读到的http://php.net/manual/en/function.strpos.php问题可能出在 != 的使用上,但我应该使用 !==。有什么想法吗?

最佳答案

您错过了您的请求是异步的。因此,当您运行此行时:document.getElementById("container").innerHTML = ajax.responseText;,请求尚未完成。看看this . onreadystatechange 是您所需要的。或者使调用同步

关于php - ajax 从数组自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12072922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com