मुझे HTML तत्व पर एक JSON ऑब्जेक्ट को एक विशेषता में डालने की आवश्यकता है।
HTML को मान्य नहीं करना है।क्वेंटिन द्वारा उत्तर दिया गया: JSON को एक
data-*विशेषता में संग्रहीत करें , जो HTML5 मान्य है।JSON ऑब्जेक्ट किसी भी आकार का हो सकता है - यानी विशाल
Maiku Mori द्वारा उत्तर दिया गया: HTML विशेषता की सीमा संभावित रूप से 65536 वर्ण है ।
क्या होगा यदि JSON में विशेष वर्ण हैं? जैसे
{foo: '<"bar/>'}क्वेंटिन द्वारा उत्तर दिया गया: सामान्य सम्मेलनों के अनुसार, विशेषता में डालने से पहले 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>
JSON का उपयोग करके 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);
});
data-jsonतो आपको इसका उपयोग करना चाहिए $(this).data('json'), jQuery ने आपको उस हिस्से पर कवर किया है।