Tôi đã tạo một tìm kiếm ajax theo phong cách Facebook cho trang web của mình khi bạn nhập nó sẽ hiển thị kết quả trong danh sách đẹp bên dưới tìm kiếm của bạn.Tìm kiếm theo phong cách Facebook AJAX
$("#s").keyup(function() {
var searchbox = $(this).val();
var dataString = 's='+ searchbox;
if(searchbox!='') {
$.ajax({
type: "POST",
url: "/livesearch.php",
data: dataString,
cache: false,
success: function(html){
$("#display").html(html).show();
}
});
} else {return false; }
});
$("body").click(function() {
$("#display").hide();
});
Vấn đề với việc này sẽ không hiệu quả khi người dùng nhập từ ví dụ "bóng đá". Điều này sẽ thực hiện 8 yêu cầu đến máy chủ. Điều gì sẽ là một cách hiệu quả hơn để làm điều này? lý tưởng tôi nghĩ rằng nó nên lưu trữ các yêu cầu trong 1 giây trước khi thực hiện một tìm kiếm thay vì ngay lập tức keyup. nhưng không chắc chắn 100% cách thực hiện điều đó ...
tất nhiên, bạn có thể chơi với giá trị trễ để tìm ra những gì phù hợp nhất với bạn, cho tôi 350m/s hoạt động hoàn hảo .... hãy nhớ, mọi người nhập khá nhanh và thời gian chờ được đặt lại thành 350ms mỗi lần một chữ cái được nhập – ekhaled
Ngoài ra, tôi đề xuất lưu vào bộ nhớ cache kết quả, trong JS hoặc w/HTTP - ví dụ: 'deboun [500 ms pause] cws [1000 ms tạm dừng] [backspace] [backspace] [backspace] [500 ms pause] ce'. Không có bộ nhớ đệm, bạn đang gửi 2 yêu cầu cho 'deboun'. – Piskvor
Hoạt động tuyệt vời! Cảm ơn! – TaylorOtwell