2010-08-08 15 views
7

मैं अपने अधिकांश करियर के लिए डेस्कटॉप दुनिया में रह रहा हूं, इसलिए मुझे इस तरह के एक बुनियादी सवाल पूछने के लिए क्षमा करें, लेकिन मुझे पूरा यकीन नहीं है कि कहां देखना शुरू करना है।jQuery में पार्स करने के लिए एचटीएमएल में कच्चे डेटा को एम्बेड करें

मैं अपने एचटीएमएल के साथ कुछ कच्चे डेटा को वापस करना चाहता हूं, और पार्स और एचटीएमएल तैयार होने के तुरंत बाद jQuery का उपयोग करके डेटा प्रदर्शित करना चाहता हूं। मुझे पता है कि मेरा जेएस कोड कैसा दिखना चाहिए, लेकिन मुझे यकीन नहीं है कि मुझे अपने एचटीएमएल में कच्चे डेटा को कैसे एम्बेड करना चाहिए।

मैं $ .getJSON() का उपयोग कर सकता हूं, लेकिन अगर मैं अपने एचटीएमएल में डेटा सही कर सकता तो बेहतर होगा।

मुझे लगता है कि या तो जेसन या एक्सएमएल काम करेगा, लेकिन एचटीएमएल में एम्बेडेड होने पर इन्हें बचने/एम्बेड करने/विश्लेषण करने का सही तरीका क्या है?

अग्रिम धन्यवाद।

+0

यह किस प्रकार का डेटा होगा, और अंतिम परिणाम कैसा दिखता है? क्या आप एक उदाहरण बना सकते हैं? –

+0

डेटा फॉर्म इनपुट फ़ील्ड के लिए लेबल, नाम और मानों की एक सूची है। मैं गतिशील रूप से टैग जेनरेट करना चाहता हूं, क्योंकि अन्यथा मुझे HTML को दो बार करना है - एक बार आरंभिक सामग्री के लिए, और जब मैं अधिक फ़ील्ड जोड़ता हूं तो jQuery का उपयोग करके उत्सर्जित करने के लिए जेएस स्ट्रिंग में एम्बेड किया जाता है। –

उत्तर

7

आप जेएसओएन डेटा को एक छिपे हुए div में डाल सकते हैं, फिर डीकोड और jQuery से उपयोग कर सकते हैं।

उदाहरण के लिए, हम ले लेंगे:

{"foo":"apple","bar":"orange"} 

यह भागने और एक div में डाल:

var data = jQuery.parseJSON(unescape($("#data").html())); 
: jQuery से फिर

<div id="data">%7B%22foo%22%3A%22apple%22%2C%22bar%22%3A%22orange%22%7D</div> 

, हम डेटा का उपयोग कर सकते

तो alert(data.foo) पर कॉल करने से हमें apple मिल जाएगा।

Here's a working example.

1

जैसे तुमने कहा यह शायद $ .post या $ .Get या $ (तत्व) .load() आदि का उपयोग अजाक्स के माध्यम से इसे प्राप्त करने के लिए सबसे अच्छा है ...

लेकिन अगर आप पेज में यह सहेजना चाहिए एक छिपे हुए क्षेत्र में सहेजना आम है। Asp.net बाइनरी सीरियलाइजेशन और बेस 64 का उपयोग करके छुपे हुए फ़ील्ड में चीज़ों को बचाता है लेकिन आप इसे जेसन स्ट्रिंग के रूप में सहेज सकते हैं और फिर इसे अपने जेएस में इस्तेमाल कर सकते हैं।

5

कहाँ और जब आप इस डेटा चाहते हैं?

आप अपने ध्यान में रखते हुए यह चाहते हैं, बस देखने के लिए डेटा पास

लड़ाई/नियंत्रक:

public ActionResult MyAction() 
{ 
    ViewData["MyData"] = "this is a sample data of type string"; 
    return View(); 
} 

और फिर, कहीं आपके ध्यान में रखते हुए:

<script> 
    var data = '<%= ViewData["MyData"] %>'; 
    $(document).ready(){ 
     alert(data); 
    } 
</script> 
<h1><%: ViewData["MyData"] %></h1> 
के

बेशक, यदि आप List<string> या 'स्ट्रिंग []' के साथ काम कर रहे हैं, तो आपको इसे समझने के लिए jQuery के लिए उचित जावास्क्रिप्ट में प्रारूपित करने की आवश्यकता होगी।

<script> 
    var dataArray = [ 

    <% foreach(string s in (string[])ViewData["MyDataArray"]){ %> 
     <%= s %>, 
    <% } %> 
    ]; 
</script> 

यदि आप दृश्य के बजाय कार्रवाई में उचित जावास्क्रिप्ट उत्पन्न अपने ध्यान में रखते हुए बदसूरत मार्कअप से बचने के लिए यह गेटर होगा:

public ActionResult MyAction() 
{ 
    string[] myArray = new string[]{ "hello", "wolrd" }; 
    ViewData["MyData"] = myArray; 
    ViewData["JavaScriptArray"] = "[" + myArray.Aggregate((current,next) => string.Format("'{0}','{1}',", current, next).TrimEnd(new char[] { ','})) + "]"; 
    // or you can use your favorite JavaScript serialize 
    return View(); 
} 

अब आप कर सकते हैं आपके विचार में निम्नलिखित:

<script> 
    var dataArray = <%= ViewData["MyJavaScriptArray"] %>; 
    alert(dataArray[0]); // alerts 'hello' 
</script> 
संबंधित मुद्दे