質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1179閲覧

DBから取得して行うautocomplete

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2018/10/01 07:06

名前の一部を入力すると
ajaxでDBから情報を取得し、すべての名前を入力できるようなautocompleteを作成する場合

jQuery

1$('#name').autocomplete({ 2 source : function(request, response) { 3 $.ajax({ 4 type : 'post', 5 url : 'db_php/autocomplete.php', 6 data : {param : request.term}, 7 dataType : 'json', 8 cache : false 9 }).done(function(jsondata) { 10 response(jsondata); 11 }).fail(function() { 12 response(['']); 13 }); 14 }, 15 autoFocus : false, 16 delay : 300, 17 minLength : 2 18});

php

1//DBから取得後 2 3foreach ($rec as $rd) { 4 $tmp = array(); 5 6 $tmp['value'] = htmlspecialchars($rd['id']).'-'.htmlspecialchars($rd['name']); ・・・A 7 $tmp['label'] = htmlspecialchars($rd['name']).' - '.htmlspecialchars($rd['addr']); ・・・B 8 9 $json[] = $tmp; 10} 11 12header('Content-type:application/json; charset=utf8'); 13echo json_encode($json);

としてみたのですが、

1)
安全のためAとBで「htmlspecialchars()」は必要なのでしょうか。

2)「htmlspecialchars()」が必要な場合
表示の際に「&」が「&」のようになるのを避けたいのですが、jQuery側でreplaceしても問題ないのでしょうか。
それともどこか別のタイミングで行うべきなのでしょうか。

なお、この値はフォームに入力しており、DBとは別の場所で使用します。

最適な方法を教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  1. 不要です。
  2. $(elem).html(content); ではなく、$(elem).text(content); で出力すれば、エスケープされます。

投稿2018/10/01 07:09

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/18 13:13

返事が遅くなってしまい申し訳ございません。 またご回答ありがとうございました。 先輩たちに聞いてもあやふやだったためスッキリしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問