[解決済み] JSONをHTML属性に格納する最良の方法とは?
質問
JSONオブジェクトをHTML要素の属性に入れる必要があります。
-
HTMLはバリデーションする必要がない。
回答者:Quentin にJSONを格納します。
data-*
属性 で、これは有効な HTML5 です。 -
JSONオブジェクトはどんなサイズにもなりえます - つまり、巨大です。
回答者:森 舞久 HTMLの属性は、65536文字まで可能です。 .
-
JSONに特殊文字が含まれている場合はどうすればよいですか? 例えば
{foo: '<"bar/>'}
回答者:Quentin 通常の慣習に従って、属性に入れる前にJSON文字列をエンコードしてください。 PHPの場合は
htmlentities()
機能 .
EDIT - PHPとjQueryを使用したソリューションの例
HTML属性にJSONを書き込む。
<?php
$data = array(
'1' => 'test',
'foo' => '<"bar/>'
);
$json = json_encode($data);
?>
<a href="#" data-json="<?php echo htmlentities($json, ENT_QUOTES, 'UTF-8'); ?>">CLICK ME</a>
jQueryを使ってJSONを取得する。
$('a').click(function() {
// Read the contents of the attribute (returns a string)
var data = $(this).data('json');
// Parse the string back into a proper JSON object
var json = $.parseJSON($(this).data('json'));
// Object now available
console.log(json.foo);
});
どのように解決するのですか?
<ブロッククオートHTMLはvalidateする必要がありません。
なぜそうしないのでしょうか?バリデーションは本当に簡単なQAで、多くの間違いを発見することができます。HTML 5の
data-*
属性を使用します。
JSONオブジェクトはどんなサイズでもよい(つまり巨大でもよい)。
私は、属性サイズに対するブラウザの制限に関するドキュメントを見たことがありません。
もし制限に遭遇した場合は、データを
<script>
. オブジェクトとマップ要素を定義する
id
をそのオブジェクトのプロパティ名と対応させます。
JSONに特殊文字が含まれている場合はどうすればよいですか?(例: {test: '<"myString/>'})
信頼できないデータを属性値に含めるための通常のルールに従えばよいのです。使用方法
&
と
"
(属性値を二重引用符で囲んでいる場合)または
'
(シングルクォーテーションで属性値を囲む場合)。
ただし、これはJSONではないことに注意してください(プロパティ名は文字列で、文字列は二重引用符のみで区切られる必要があります)。
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JSのDateからDay名
-
[解決済み] 兄弟ノードを選択する方法はありますか?
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] moment.jsでミュータビリティを回避するには?
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] javascriptでオプションのパラメータを扱う
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] 変異を伴わないオブジェクトからの値の削除