2011-08-02 13 views
5

मैं जेएसओएन डेटा से एचटीएमएल जेनरेट करने के लिए jQuery टेम्पलेट प्लगइन का उपयोग कर रहा हूं, जो उपयोगकर्ता मैनिपुलेट (और संभावित रूप से बदलता है) से अधिक है। मैं इस एचटीएमएल को जेएसओएन में वापस पढ़ने का एक तरीका ढूंढ रहा हूं ताकि मैं इसे अपने सर्वर पर वापस सहेज सकूं। jQuery $.tmplItem() विधि प्रदान करता है जो मूल रूप से data JSON सेट करता है लेकिन मुझे आश्चर्य है कि मैं वर्तमान डोम में मूल्यों को कैसे प्राप्त कर सकता हूं?jQuery एचटीएमएल जेएसओएन

उत्तर

7

इस बारे में कैसे?

http://jsfiddle.net/mWuHe/14/

, अपने क्षेत्र के एचटीएमएल बाहर खींच तो यह JSON वापस करने के लिए परिवर्तित:

$(':button').click(function() { 
 
    $('#output').text(JSON.stringify({ 
 
     data:$('#input').html() 
 
    })); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="input" contenteditable="true" style="border: 1px solid;width:300px; height:100px;"><b>Edit me!</b> You can use CTRL+B to change bold, ctrl+I to change italics.</div> 
 
<div style="clear:both;"> 
 
    <input type="button" value="Get HTML"> 
 
</div> 
 
<div id="output" style="border: 1px solid;clear:both;width:300px;height:100px;font-family:courier;font-size:10px;"> 
 

 
</div>

btw मैं simplicty के लिए JSON.stringify इस्तेमाल किया, लेकिन उत्पादन परिवेश में आप शायद jquery-json जैसे लाइब्रेरी का उपयोग करना चाहिए, क्योंकि कुछ पुराने ब्राउज़र जो अभी भी समर्थन नहीं कर रहे हैं, अभी भी चारों ओर घूम रहे हैं।

+3

आपका उत्तर गहरा JSON घोंसला का समर्थन नहीं करता है जो HTML संरचना से मेल खाता है। यह एक हैक, एड-हुड समाधान से अधिक है। – vsync

+0

यदि आप एक उदाहरण विफल केस और एक विकल्प प्रदान करना चाहते हैं, तो हर तरह से, ऐसा करें। हालांकि, मैं किसी भी स्पष्ट कारण के बारे में सोच सकता हूं कि एचटीएमएल की एक साधारण स्ट्रिंग क्यों है (जो कि, आखिरकार, केवल ASCII) JSON एन्कोडेड नहीं हो सकती है, इससे कोई फर्क नहीं पड़ता। यह सिर्फ एक स्ट्रिंग है, यह अप्रासंगिक है कि "संरचना" का प्रतिनिधित्व किस प्रकार किया जा रहा है। हम जावास्क्रिप्ट को जावास्क्रिप्ट ऑब्जेक्ट स्ट्रक्चर में पार्स करने की कोशिश नहीं कर रहे हैं, हम बस स्ट्रिंग के रूप में पूरी चीज को सर्वर पर पास करने की कोशिश कर रहे हैं। –

+1

http://stackoverflow.com/q/7993066/104380 – vsync

0

ऐसा करने का सबसे अच्छा तरीका कुछ प्रकार के डेटा बाध्यकारी होगा, जैसे कि jQuery data link plugin या (शायद आपकी वर्तमान आवश्यकताओं के लिए थोड़ा सा) Knockout

संबंधित मुद्दे