JSON

2012-02-29 15 views
14

में HTML डालकर शीर्षक के अनुसार, क्या इसे JSON में HTML डालने का एक अच्छा अभ्यास माना जाता है? कारण मैं ऐसा करने की जरूरत है क्योंकि मैं जहां सूची उपयोगकर्ता इनपुट से आ रही है एक कस्टम लटकती करना चाहते हैं है, और json तो दिखाई देता है:JSON

{ listTitle: 'Tasks', listHtml: '<ul><li></li>...</ul>' } 

और मैं (निम्नलिखित के रूप में foreach रखने इसे ध्यान में रखते एक मेरी कोड के संस्करण नीचे छीन लिया है, सत्यापन जगह में है, लेकिन इस सवाल के लिए मैं उन्हें बाहर ले)

$list = /** Code to grab 'Tasks' list and its title from mysql **/; 
$title = 'Tasks'; 
$listHtml = ''; 
foreach($list as $content) { $listHtml .= '<li>' . htmlspecialchars($content, ENT_QUOTES, 'UTF-8') . '</li>'; } 

exit(json_encode(array(
    'title' => $title, 'listHtml' => '<ul>' . $listHtml . '</ul>' 
))); 

मेरे चिंता यह है कि वहाँ कुछ विशेष वर्ण तोड़ सकता है कि हो सकता है जेएसओएन स्ट्रिंग। कृपया मदद करे।

+0

यह सिर्फ एक स्ट्रिंग है। स्ट्रिंग्स JSON में समर्थित हैं। इसमें एचटीएमएल वाले भी लोग;) - http://json.org/ – hakre

+0

@andreas देखें: डेटा से प्रेजेंटेशन को अलग करना JSON जैसे प्रारूपों का मुख्य बिंदु प्रतीत होता है। क्या आप अन्य वेबसाइटों या उपयोगकर्ताओं को इस डेटा को पक्ष में लाने और अपनी वेबसाइट के _outside_ का उपयोग करने का इरादा रखते हैं? यदि ऐसा है, तो HTML में जोड़ना उस को बर्बाद कर देगा। यदि नहीं, तो यह एक जेसन फ़ीड है जिसका उपयोग आप केवल अपने वेबपृष्ठ बनाने में मदद के लिए करते हैं, तो यह आपके ऊपर होगा। –

+0

@bob एह? मैंने सोचा कि आपके द्वारा उल्लिखित चीजों के लिए क्रॉस डोमेन नीति मौजूद है? तो जब तक मैं स्क्रिप्ट पर स्वेच्छा से कॉलबैक समर्थन लिखता हूं, मुझे ठीक होना चाहिए? कृपया मुझे –

उत्तर

18

आप ऐसा करने वाले पहले व्यक्ति नहीं होंगे, और निश्चित रूप से अंतिम नहीं।

वास्तव में प्रश्न का उत्तर देने के लिए, यह मानते हुए कि आप प्रोटोकॉल/मानक का पालन कर रहे हैं और इसे तोड़ नहीं रहे हैं (उदाहरण के लिए स्ट्रिंग में उद्धरण सहित), आपको ठीक होना चाहिए। json_encode इस सब पर एक महान काम करता है, लेकिन जैसा कि @ कोलिंक ने बताया है कि आप इसे यूटीएफ 8 में एन्कोड करते हैं, अन्यथा भटक जाएं यूनिकोड वर्ण कभी-कभी इसे खाली आउटपुट के परिणामस्वरूप तोड़ देंगे।

इसके अलावा, यह प्रोग्रामर वरीयता का उपयोग करने की प्राथमिकता है। कुछ इसे से बचते हैं और यूआई को पेज पर काम करते हैं, अन्य लोगों के पास सर्वर यूआई उत्पन्न करता है और जावास्क्रिप्ट को बस इसे डंप करने देता है - किसी भी तरह से यह आपका कॉल है, और पूरी तरह से स्वीकार्य है।

+0

धन्यवाद ब्रैड! निश्चित रूप से सहायक और गहन उत्तर :) –

+0

फॉलो-अप के रूप में, [नॉकआउट जेएस] जैसे पुस्तकालय (http: // knockoutjs।कॉम /) एक उपयोग में आसान templating प्रणाली का उपयोग कर JSON डेटा और यूआई एकीकरण के बहुत आसान अभिसरण की अनुमति देता है। –

11

इसमें कुछ भी गलत नहीं है। json_encode वैसे भी सभी पात्रों से बच निकलता है, इसलिए केवल एक चीज जिसे आप सावधान रहना चाहते हैं, यह सुनिश्चित कर लें कि आपके तार utf8_encode डी हैं।

0

आप सुनिश्चित कर सकते हैं, लेकिन आप JSON में सरणी के रूप में आसानी से मानों को पार कर सकते हैं और क्लाइंट में HTML प्रतिपादन कोड डाल सकते हैं; आपको सर्वर चक्र, बैंडविड्थ बाइट्स, और तर्क-प्रस्तुति मिश्रण को सहेजना।