Ajaxを利用してキーを'keypress'する都度に検索結果を表示させるコードを作成しています。
以下のようなコードですが、実行すると検索結果の表示がガクガクと痙攣します。
色々試しても改善しなかったのでおかしな点を教えていただけませんでしょうか。
追記です。
上記の問題は表示させているjqueryのほうに問題があることが判明しました。
ところが別の問題が発生し、value値に打ち込んだキーをpost送信した際に、
どうやら"Aキー"しか拾えていないようです。
コンソールログやアラートで確認しましたがやはりpost送信した後、
SQLも通して実行結果とともにalertを出したところ"Aキー"のみしか拾えていないようでした。
もし問題が判明しましたら回答お願いいたします。
単純なコードなのに、謎です。
php
1<?php 2require ("db.php"); 3 4header("Content-type: text/plain; charset=UTF-8"); 5if (isset($_POST['key'])){ 6 7 $keyword = $_POST['key']; 8 9 $dsn = sprintf('mysql: host=%s; dbname=%s; charset=utf8', $db['host'], $db['dbname']); 10 try { 11 $pdo = new PDO($dsn, $db['user'], $db['pass'], array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); 12 13 $stmt = $pdo->prepare("SELECT * FROM tablename WHERE test LIKE '%{$keyword}%'"); 14 15 $stmt->execute(); 16 17 if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 18 foreach ($stmt as $row) { 19 echo '<dt>'.$row['result'].'</dt>'; 20 } 21 } else { 22 23 $errorMessage = 'ERROR'; 24 } 25 26 } catch (PDOException $e) { 27 $errorMessage = 'ERROR OF DATABASE'; 28 } 29} 30else{ 31 echo 'NO DATA'; 32} 33?>
js
1$(function(){ 2 $('#searching-form').bind('keypress', function() { 3 if ($(this).val().length > 0) { 4 $('.search-list').fadeIn(0); 5 var searchkey = {}; 6 searchkey.key = $('#searching-form').val(); 7 $.ajax({ 8 type: "POST", 9 url: "search_key.php", 10 data: searchkey, 11 success: function(data, dataType){ 12 $('.search-list').html(data); 13 }, 14 error: function(XMLHttpRequest, textStatus, errorThrown){ 15 alert('Error : ' + errorThrown); 16 } 17 }); 18 return false; 19 } else { 20 $('.search-list').fadeOut(100); 21 } 22 }); 23});
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/21 12:41
2017/07/21 12:43