2009-09-28 55 views
1

我正在使用下面的PHP代码获取结果以返回到自动建议/自动完成。问题是,如果较早的SQL查询比最近的SQL查询花费较长时间从数据库返回,那么旧查询的结果将显示在自动建议结果框中。因此,如果您开始搜索Thomas,则可能会显示Tho的结果,如果该SQL查询需要更长时间。我想知道是否有一种方法可以在实施新的查询时取消先前的查询,或者确保使用最近的查询?确保最新的SQL查询结果用于自动建议

<?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

如果这是关系到阿贾克斯之前XmlHttpRequest.abort(),您可以添加'ajax'标签。 – 2012-01-02 16:58:44

回答

0

您可能想要同步AJAX调用。就像在键盘事件之后有几秒钟的延迟,然后进行AJAX调用。设置asynchronous = true也可以提供帮助。

0

您可以通过调用abort方法中止Ajax调用:制作了新的要求