2011-05-10 11 views
7

संभव डुप्लिकेट:
How do I return JSON and loop through the returned json in jQuery in MVC app?मैं jquery द्वारा लौटा JSON डेटा कैसे लूप करूं?

यह मेरा डेटा MVC नियंत्रक द्वारा दिया है और मैं अपने सफलता कॉलबैक में यह मिलता है:

[{ "_id" : { "$oid" : "4dc8" }, "eid" : { "$oid" : "4da" }, "user" : "bob", "text" : "First comment!!", "dt" : { "$date" : 1304966277978 } }, 
{ "_id" : { "$oid" : "4dc8" }, "eid" : { "$oid" : "4da" }, "user" : "bob", "text" : "Second comment!!", "dt" : { "$date" : 1304966347677 } }, 
{ "_id" : { "$oid" : "4dc8" }, "eid" : { "$oid" : "4da" }, "user" : "bob", "text" : "Third comment!!", "dt" : { "$date" : 1304966493240 } } 
] 

नियंत्रक:

[HttpGet] 
public JsonResult GetComments(params...) 
{ 
    return Json(new { comments = GetFromDB().ToJson() }, JsonRequestBehavior.AllowGet); 
} 

समस्या: मैंने पंक्तियों को लूप करने के कई तरीकों की कोशिश की। लेकिन सभी अनंत लूप लगता है।

$.ajax(
     { 
      type: "GET", 
      url: "/comment/GetComments", 
      dataType: "json", 
      data: "app=" + app + "&eid=" + eid + "&pg=" + pg + "&pgs=" + pgs, 
      success: function (result) { 
       $.each(result[comments], function() { 
        $.each(this, function (k, v) { 
         alert('this a column or attribute'); 
        }); 
        alert('end of row'); 
       }); 
      }, 
      error: function (req, status, error) { 
       alert('Error=' + error + ' & Status=' + status); 
      } 
     }); 

भी करने की कोशिश की:

$.each(result["comments"], function (key, value) { 
    alert('comment found'); 
}); 

कैसे कर सकते हैं मैं पाश पंक्तियों & पहुँच प्रत्येक विशेषता के मूल्य?

+0

क्या की तरह अपने ajax कॉल दिखता है? –

+0

कृपया – mcgrailm

+0

में कोड चिपकाने के बजाय अपनी पोस्ट संपादित करें, मूल रूप से आज भी वही चीज़ पोस्ट की गई है: http://stackoverflow.com/questions/5953761/how-do-i-return-json-and-loop-through-the -returned-json-in-jquery-in-mvc-app/5954010 # 5954010 –

उत्तर

4

आप सिर्फ एक सरल for पाश इस्तेमाल कर सकते हैं:

for (var i = 0, len = results.length; i < len; i++) { 
    // do something with results[i].text 
} 

See example →


संपादित करें: आप पहली बार तो पाश आपको चाहिए पहले एक जावास्क्रिप्ट वस्तु को JSON स्ट्रिंग परिवर्तित करने के लिए की जरूरत है:

results = JSON.parse(results); 
+0

यह jsfiddle में काम करता है लेकिन मेरे ब्राउज़र पर नहीं। अलर्ट ('len =' + results.length) मुझे जेसन प्रतिक्रिया में कुल वर्णों को प्रिंट करता है, प्रतिक्रिया में आइटम की संख्या नहीं। क्या यही कारण है? यह जेसन को सादा पाठ के रूप में पेश कर रहा है ?? – kheya

+0

जेएसओएन एक टेक्स्ट प्रारूप है: http://www.json.org/ – Tamler

+0

मैंने अपना जवाब अपडेट किया। – mVChr

1
$.getJSON("YourControllerHere.XXX",{}, function(data){ 
    $.each(data, function(key, val) { 
     $('#someLocation').append('<li>' + val.text + '</li>'); //This is just an example. You can do something with each row/ value pair here. 
    }); 
}); 

आपको इसके साथ पंक्तियों और मूल्यों के माध्यम से कदम उठाने में सक्षम होना चाहिए।

बेस्ट,

टी

1

आपका पहला समस्या है आपके JSON में कोई result["comments"] क्षेत्र है। आपको एक सरणी मिल रही है, जो मैं मानता हूं वह स्वयं टिप्पणियां है। तो आपको उस पर फिर से प्रयास करने की जरूरत है।

$.each(result, function(k, v) { console.log(v.user); }); 

काम करना चाहिए, मैंने बस ब्राउज़र में इसे आजमाया। पंक्तियों के माध्यम से निम्नलिखित कोड दोहराता है, और फिर प्रत्येक पंक्ति की विशेषताओं के माध्यम से दोहराता:

$.each(foo, function(k, row) { $.each(row, function(attr, value) { console.log(attr, value); }) }); 
1
for(var key in json) 
    for(var key in (obj = json[key])) 
     { 
      //obj holds the current object in the json array 
      console.log(obj[key]); 
     }  
संबंधित मुद्दे