Emin olun en son SQL sorgu sonucu AutoSuggest kullanılır

2 Cevap php

Ben sonuç bir autosuggest / otomatik tamamlama için geri almak için aşağıdaki PHP kodu kullanıyorum. Sorun, bir önceki SQL sorgusu En son SQL sorgu daha veritabanından döndürmek için uzun sürerse eski sorgunun sonuçları autosuggest sonuçları kutusunda görüntülenir olmasıdır. Eğer Thomas aramaya başlarsa bu SQL sorgusu uzun sürerse Yani, Tho için sonuçlar gösterebilir. Yeni bir uygulamaya kez önceki sorguları iptal etmek, ya da en son sorgu kullanıldığından emin olmak için bir yol olup olmadığını merak ediyorum?

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

2 Cevap

Sen AJAX çağrıları senkronize etmek isteyebilirsiniz. Sonra yukarı tuşu olaydan sonra birkaç saniye gecikme olan ve gibi AJAX arama yapmak. asynchronous = true de yardımcı olabilir ayarlama.

Eğer iptal yöntemini çağırarak ajax arama iptal edebilirsiniz: XmlHttpRequest.abort() Yeni isteği yapmadan önce