私は自分のウェブサイトのブログ記事用に小さな検索エンジンを構築しました。フォームを Ajax で送信し、結果を返し、古いコンテンツを新しい検索結果に置き換えています。問題は、一度検索すると機能することですが、もう一度検索すると、最初の検索の結果が表示されるだけです。事前に感謝します。
HTML
<form action="handlers/handler-search.php" class="align-right" method="post">
<input type="text" name="term" placeholder="Search app reviews...">
<input type="submit" value="Go">
</form>
jQuery アヤックス
$('form').submit(function (event) {
event.preventDefault();
$(".content").fadeOut(750);
$.ajax({
type: "POST",
url : $('form').attr('action'),
dataType: "json",
data: $("form").serialize()
}).done(function(data) {
var string = "";
$.each(data, function(i,item) {
string += "<section class='widget six'> \
<a href='index.php?art_id="+item.art_id+"'> \
<div class='content'> \
<h1>"+item.art_title+"</h1> \
</div> \
</a> \
</section>";
});
$('.results').replaceWith(string);
$(".content").fadeIn(750);
});
return false;
});
PHP/SQL
if(isset($_POST['term'])) {
$statement_search = $db->prepare("SELECT * FROM app_articles WHERE art_title LIKE :term");
$statement_search->setFetchMode(PDO::FETCH_ASSOC);
$statement_search->execute(array(':term' => '%'.$_POST['term'].'%'));
$data = $statement_search->fetchAll();
echo json_encode($data);
}