我正在使用下面的PHP代码获取结果以返回自动提示/自动完成。问题是,如果较早的SQL查询从数据库返回的时间比最近的SQL查询要长,那么旧查询的结果将显示在autosuggest结果框中。因此,如果您开始搜索Thomas,如果SQL查询需要更长时间,它可能会显示Tho的结果。我想知道是否有办法在实施新查询后取消先前的查询,或者确保使用最新的查询?
<?php
// begin XML output
$xmlStr = <<<XML
<?xml version='1.0' standalone='yes'?>
<authors>
XML;
// open database connection
$mysqli = new mysqli("localhost", "user", "pass", "library");
if (mysqli_connect_errno()) {
printf("Connect failed: %s
", mysqli_connect_error());
exit();
}
// retrieve author list matching input
// add to XML document
$q = $mysqli->real_escape_string($_GET['query']);
$sql = "SELECT AuthorName FROM author WHERE AuthorName LIKE '" . $q . "%' ORDER by AuthorName";
if ($result = $mysqli->query($sql)) {
while ($row = $result->fetch_row()) {
$xmlStr .= '<author name="' . $row[0] . '"></author>';
}
$result->close();
}
// clean up
// output XML document
$mysqli->close();
$xmlStr .= '</authors>';
header("Content-Type: text/xml");
echo $xmlStr;
?>
答案 0 :(得分:0)
您可能希望同步AJAX调用。就像在按键启动事件后延迟几秒钟然后进行AJAX调用一样。设置asynchronous = true
也可以提供帮助。
答案 1 :(得分:0)
您可以在发出新请求之前调用abort方法:XmlHttpRequest.abort()
来中止ajax调用