2011-05-09 12 views
10

एक छिपे हुए इनपुट फ़ील्ड में जेसन स्ट्रिंग को कैसे स्टोर करें। खैर, मैं इसे प्रोग्रामेटिक रूप से कर सकता था, लेकिन बचने में कुछ गलत था। चूंकि मेरे स्ट्रिंग मामूली लंबा है, यह "सभी के नाम के लिए चार से बचने के लिए मुश्किल है। कृपया बताएं कि यह कैसे काम करता है प्रोग्राम के रूप में (चरण 1), सांत्वना उत्पादन ही।इनपुट फ़ील्ड मान में JSON स्ट्रिंग स्टोर करें

[{"X":0,"Y":0,"W":0,"H":500},{"X":358,"Y":62,"W":200,"H":500}]test2.html:21 [{"X":0,"Y":0,"W":0,"H":500},{"X":358,"Y":62,"W":200,"H":500}] test2.html:22 PASSED PHASE 1
jquery.min.js:16Uncaught SyntaxError: Unexpected end of input

धन्यवाद, लगता है जैसे

बीएसआर


<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE HTML><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
<title>Test</title> 
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" /> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
</head> 
<body> 
     <input type="hidden" id="jsondata" /> 
     <input type="hidden" id="jsondata2" value="[{"X":0,"Y":0,"W":0,"H":500},{"X":358,"Y":62,"W":200,"H":500}]"/> 


    <script > 
      $(document).ready(function() { 

      myItems = [{"X":0,"Y":0,"W":0,"H":500}, 
        {"X":358,"Y":62,"W":200,"H":500}] 

      console.log(JSON.stringify(myItems)); 
      $("#jsondata").val(JSON.stringify(myItems)); 
      console.log(document.getElementById("jsondata").value); 
      console.log("PASSED PHASE 1"); 

      var obj = jQuery.parseJSON($("#jsondata2").val()); 
      console.log(obj.length);  
      console.log("PASSED PHASE 2");   
     }); 
    </script> 
</body> 
</html> 

संपादित करें:।

निम्नलिखित कोड काम करता है .. सुनिश्चित नहीं है कि यह सही है या नहीं। तो जवाब के रूप में एक अच्छी व्याख्या चिह्नित करेंगे। धन्यवाद।

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE HTML><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
<title>Test</title> 
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" /> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
</head> 
<body> 
     <input type="hidden" id="jsondata" /> 
     <input type="hidden" id="jsondata2" value='[{"X":0,"Y":0,"W":0,"H":500},{"X":358,"Y":62,"W":200,"H":500}]'/> 


    <script > 
      $(document).ready(function() { 

      myItems = [{"X":0,"Y":0,"W":0,"H":500}, 
        {"X":358,"Y":62,"W":200,"H":500}] 

      console.log(JSON.stringify(myItems)); 
      $("#jsondata").val(JSON.stringify(myItems)); 
      console.log(document.getElementById("jsondata").value); 
      console.log("PASSED PHASE 1"); 

      var obj = jQuery.parseJSON($("#jsondata2").val()); 
      console.log($("#jsondata2").val()); 
      console.log(obj[0].H); 
      console.log("PASSED PHASE 2");   
     }); 
    </script> 
</body> 
</html> 
+1

आप स्टोर करने के लिए एक छिपा क्षेत्र में इस ताकि आप इसे बाद उपयोग कर सकते हैं चाहते हैं या आप एक प्रपत्र के माध्यम से इसे प्रस्तुत करने के लिए सोच रहे थे? –

+0

मैं एक छिपे हुए क्षेत्र में जेसन स्ट्रिंग को संग्रहीत कर रहा हूं, और सर्वर सर्वर पर टेम्पलेट के माध्यम से मान प्रस्तुत किया जाता है।क्लाइंट साइड पर, मैं इसे ऑब्जेक्ट सरणी में पार्स करता हूं और आगे के प्रतिनिधित्व के लिए इसका उपयोग करता हूं – bsr

+0

ठीक है .. निम्नलिखित काम किया ... \t \t <इनपुट प्रकार = "छुपा" आईडी = "jsondata2" value = '[{"X": 0 , "वाई": 0, "डब्ल्यू": 0, "एच": 500}, {"एक्स": 358, "वाई": 62, "डब्ल्यू": 200, "एच": 500}] '/>, अगर किसी के पास अच्छी स्पष्टीकरण है, तो मैं इसे उत्तर के रूप में चिह्नित करूंगा .. आपकी सभी मदद के लिए धन्यवाद – bsr

उत्तर

2

html मार्कअप अमान्य है ... यदि आप एचटीएमएल सत्यापनकर्ता पहले एचटीएमएल againt (गैर एक काम कर) आप लाइन पर त्रुटियों मिलेगा चलाने ...

+0

अच्छी पकड़ .. नामस्थान के बारे में पहली त्रुटि, क्योंकि फ़ाइल मूल रूप से एक xhtml फ़ाइल थी, फिर मैंने कुछ हिस्सों को हटा दिया .. दूसरी त्रुटि, अतिरिक्त दूरी के बारे में, सुनिश्चित नहीं है .. पढ़ने की जरूरत है अधिक .. धन्यवाद – bsr

0

नीचे दिए गए कोड को आज़माएं, ऐसा लगता है कि आपके पास एक सरणी है जो मेरे लिए कोई वस्तु नहीं है।

myItems = { data : [{"X":0,"Y":0,"W":0,"H":500}, 
        {"X":358,"Y":62,"W":200,"H":500}] }; 
+0

मुझे लगता है कि आप प्रश्न का बिंदु खो रहे हैं। वह पूछ रहा है कि जब जावास्क्रिप्ट के माध्यम से डेटा को डेटा इंजेक्शन दिया जाता है तो यह काम करता है, लेकिन जब डेटा फ़ील्ड के मान गुण में होता है तो यह नहीं होता है। – Gazler

+0

@ गैज़लर: मेरी समझ नहीं है। मैं 'stringify()' काम और 'parseJSON()' काम नहीं देखता हूं। 'parseJSON() 'विफल रहता है क्योंकि यह वैध JSON नहीं है। मैं वैध JSON देता हूं: हल हो गया। – Hogan

+0

@ होगन, यदि आप कोड चलाते हैं, तो आप देखेंगे कि दो विधियां अलग-अलग डेटा से चल रही हैं। दोनों स्ट्रिंग() और parseJSON() काम करते हैं। – Gazler

6
<input type="hidden" id="jsondata2" value="[{"X":0,"Y":0,"W":0,"H":500},{"X":358,"Y":62,"W":200,"H":500}]"/> 

सही नहीं है। एकल उद्धरण ' के बजाय मूल्य स्ट्रिंग में दोहरे उद्धरण चिह्नों " प्रयोग करें (या " भागने)

<input type="hidden" id="jsondata2" value="[{'X':0,'Y':0,'W':0,'H':500},{'X':358,'Y':62,'W':200,'H':500}]"/> 
+1

बस एसओ रंगीनकरण इस तरह के मुद्दों को खोजने के लिए एक अच्छा सहायक है। –

+0

जो निर्णायक नहीं है, parseJSON var obj = jQuery.parseJSON ('{"name": "John"}') के लिए jQuery API से उदाहरण देखें; अलर्ट (obj.name === "जॉन"); .. यह – bsr

+5

भी काम करता है, http://www.json.org/, अब तक का सबसे आम त्रुटि मैंने ऑब्जेक्ट कुंजी से संबंधित है। JSON में (जावास्क्रिप्ट के विपरीत) इन्हें डबल-उद्धृत तार होना चाहिए। वास्तव में, जेएसओएन में सभी तारों को डबल कोट्स में संलग्न किया जाना चाहिए (जावास्क्रिप्ट भी सिंगल कोट्स की अनुमति देता है; जेएसओएन नहीं करता है)। रेफरी: http://simonwillison.net/2006/Oct/11/json/ – bsr

1

उद्धरण के बारे में जवाब देखें इसे ठीक करने के लिए।

कारण सरल है - आप इस कोड है जब: सिर्फ एक कबाड़ के रूप में फेंक:

[sometag someattr="qwerty"/]

और अंतिम भाग (123 ": cxzcxz")

[sometag someattr="qwerty"123":cxzcxz"/]

ब्राउज़र के रूप में यह समझता है । तो अपने ठोस मामले के लिए parseJSON सिर्फ इस के साथ काम करने की कोशिश करता है:

[{

लेकिन आपको लगता है यह `सा संपूर्ण स्ट्रिंग की तरह:

[{"X":0,"Y":0,"W":0,"H":500},{"X":358,"Y":62,"W":200,"H":500}]

तो बेहतर आप के एक मूल्य में डालने से पहले अपने json सांकेतिक शब्दों में बदलना चाहिए सर्वर पक्ष पर छुपा क्षेत्र।

3

आप कुछ इस तरह कर सकते हैं, लेकिन यह सुंदर है बुरा, एचटीएमएल:

<textarea id="jsondata" sytle="display:none"></textarea> 

और जे एस

$(function(){ 

    var myItems = [{"X":0,"Y":0,"W":0,"H":500}, {"X":358,"Y":62,"W":200,"H":500}] 

    $("#jsondata").val(JSON.stringify(myItems)); 

}); 
संबंधित मुद्दे