2009-09-28 114 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調用:製作了新的要求