jQueryのautocompleteを実装してみたのですが、4つの疑問があります。
(1つでもお答えいただけたら嬉しいです。)
サーバーサイドはPHPで、配列に指定のワードを格納しておき、ユーザーが検索ワードを入力していくと、それが前方で一致するものを候補として出してくれます。
入力フォームは以下のようになりました。
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="utf-8"> 5<title>INPUT</title> 6 7<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 8<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/themes/smoothness/jquery-ui.css" /> 9<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/jquery-ui.min.js"></script> 10 11<script> 12$(function() { 13 $("#ac").autocomplete({ 14 source: "./autocomplete.php" 15 }); 16}); 17</script> 18 19</head> 20<body> 21 22<form> 23<input type="text" id="ac"> 24</form> 25 26</body> 27</html> 28
(1) link rel="stylesheet" が指定されていますが、独自のCSSを使用することはできないのでしょうか?また、そうするとautocomplete機能に影響がありますか?
(2) jQueryを利用するために script src を指定しますが、上記のものでも問題ないでしょうか?(正常に動作しますが最新バージョンではないと思います。)
サーバーサイドのautocomplete.phpです。
PHP
1//list[]に候補のワードが格納 2require_once("list.php"); 3 4 5$words = []; 6 7$term = (isset($_GET['term']) && is_string($_GET['term'])) ? $_GET['term'] : ''; 8 9foreach($list as $word){ 10 $pos = mb_stripos($word, $term); 11 if($pos===0){ 12 $words[] = $word; 13 } 14} 15 16header("Content-Type: application/json; charset=utf-8"); 17echo json_encode($words); 18
(3) ユーザーは1文字入力するたびに、Ajaxでautocomplete.phpにアクセスしているのですか?
(4) $term = (isset($_GET['term']) && is_string($_GET['term'])) ? $_GET['term'] : '';
としていますが、$termはfilter_inputで受け取ったりHTMLエスケープをしたりする必要はあるでしょうか?
コードがセキュリティ的に安全かどうかも知りたいです。
質問が多くて恐縮ですが、お答えいただけたらうれしいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/24 07:10
2017/09/24 14:15
2017/09/24 14:57