2010-08-08 23 views
7

benim kariyerimin en masaüstü dünyada yaşıyordum içinde ayrıştırmak, bu nedenle böyle bir temel soru sorduğum için beni affet, ama seyir nereden başlayacağınızı tam emin değilim için.Göm ham veri jQuery

benim HTML ile birlikte bazı ham veri dönün ve ayrıştırmak ve en kısa sürede HTML hazır olarak jQuery kullanarak veri görüntülemek istiyor. Benim js kodumun neye benzemesi gerektiğini biliyorum, ancak ham verileri HTML'mde nasıl yerleştireceğimi bilmiyorum.

$ .getJSON() yöntemini kullanabilirim, ancak verileri HTML'mde doğru bir şekilde alabilirsem daha iyi olur. HTML'de gömülü yaparken

Ben json veya XML ya çalışacağını düşünüyorum, ama/Göm kaçmak için uygun yolu nedir/bunlar ayrıştırmak?

Şimdiden teşekkürler.

+0

Bu ne tür bir veri olurdu ve sonuç ne gibi olurdu? Bir örnek verebilir misin? –

+0

Veri, form giriş alanları için etiketlerin, adların ve değerlerin bir listesidir. Etiketleri dinamik olarak oluşturmak istiyorum, çünkü aksi halde HTML'yi iki kez yapmam gerekiyor - bir kez ilk içerik için, ve daha fazla alan eklediğimde jQuery kullanarak yaymak için tekrar js dizelerine yerleştirdim. –

cevap

7

JSON verilerini gizli bir div'a yerleştirebilir, daha sonra kod çözebilir ve jQuery'den kullanabilirsiniz. Kaçış bunu

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

ve bir div koymak:

Örneğin, alacağım

var data = jQuery.parseJSON(unescape($("#data").html())); 
: jQuery dan Sonra

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

, biz verileri kullanabilir

alert(data.foo) numaralı telefonu arayarak bize apple vereceğiz.

Here's a working example.

1

bunu ... $ .post veya $ .get veya $ (eleman) .Load() vb kullanarak Ajax yoluyla almak için muhtemelen

en iyisi Ama sayfasında kaydetmek gerekiyorsa Dediğim gibi Gizli bir alana kaydetmek yaygındır. Asp.net, ikili seri hale getirme ve Base64 kullanarak gizli alanlara şeyler kaydeder, ancak bunu bir Json dizesi olarak kaydedebilir ve daha sonra JS'nizde kullanabilirsiniz.

5

ve bu verileri istiyorsun? senin görünümünde bir yere, sonra

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

Ve:

Eğer görünümünde istiyorsanız

, sadece görünümüne

Aksiyon/Kontrolörü veri aktarmak Of

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

Tabii, bir List<string> veya "string []" ile çalışıyorsanız, bunu anlamak için jQuery için uygun JavaScript'e biçimlendirmeniz gerekir.

<script> 
    var dataArray = [ 

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

Eğer görünümünde çirkin işaretlemeyi önlemek için yerine görünümün hareketlerde doğru JavaScript oluşturulan eğer alıcı olacaktır: senin görünümünde aşağıdaki

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(); 
} 

Şimdi yapabilirsiniz:

<script> 
    var dataArray = <%= ViewData["MyJavaScriptArray"] %>; 
    alert(dataArray[0]); // alerts 'hello' 
</script>