2009-10-14 23 views
17

मुझे लगता है कि मेरा पीछा jsonJquery प्रत्येक JSON ऑब्जेक्ट

{ 
    "ThreadCount":61, 
    "GroupList":[ 
     {"userName":"KLT","count":2687}, 
     {"userName":"KCameron","count":718}, 
     {"userName":"IRG","count":156},{"userName":"JLB","count":123},{"userName":"HML","count":121},{"userName":"SMN","count":99},{"userName":"TBridges","count":68},{"userName":"ARF","count":65},{"userName":"MarkGreenway","count":61},{"userName":"SMC","count":55},{"userName":"EMD","count":52},{"userName":"PKP","count":41},{"userName":"KBounds","count":36},{"userName":"MAN","count":33},{"userName":"LAC","count":17},{"userName":"EPS","count":17},{"userName":"CAN","count":7},{"userName":"MAJ","count":3},{"userName":"CPC","count":2}] 
} 

मैं एक div में THREADCOUNT रख दिया और उपयोगकर्ता नाम और counds जोड़ने के लिए jQuery के (या जावास्क्रिप्ट का उपयोग करना चाहते देता है एक सेवा से लौट रहे एक परिणाम सेट है एक टेबल

success: function(result) { 
    $("#Unfiled").html(result.ThreadCount); 
    $.each(result.GroupList, function(user) { 
     $('#myTable > tbody').append(
      '<tr><td>' 
      + user.userName 
      + '</td><td>' 
      + user.count + 
      '</td></tr>' 
     ); 
    }); 
} 

किसी कारण मैं अपनी तालिका में कुछ भी नहीं मिल रहा है के लिए ...

वैसे करने के लिए अपने HTML यहां है:

<table> 
    <tr> 
     <td> 
      Unfiled Emails: 
     </td> 
     <td id="Unfiled"> 
      -1 
     </td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <table id="myTable" border="2" cellpadding="3" cellspacing="3"> 
      </table> 
     </td> 
    </tr> 
</table> 

मैं जानता हूँ कि मैं कुछ सरल याद आ रही है ... अग्रिम

+0

क्या आप पूरी तरह से सुनिश्चित हैं कि आपको प्रतिक्रिया के रूप में वर्णित किया गया है? मैंने देखा है कि आपके पास 61 की बजाय प्रतिद्वंद्वी काउंटर -1 है, ऐसा लगता है जैसे सर्वर आपको गलत डेटा देता है। –

+0

आपको आर्टिम मिस्लेड के लिए खेद है ... -1 अजाक्स होने से पहले क्या है। – MarkKGreenway

उत्तर

40

each, this पर प्रदान किए गए फ़ंक्शन के अंदर वर्तमान तत्व को संदर्भित करता है। इस प्रयास करें:

$.each(result.GroupList, function() { 
    $('#myTable > tbody').append(
     '<tr><td>' 
     + this.userName 
     + '</td><td>' 
     + this.count + 
     '</td></tr>' 
    ); 
}); 

है कि आप के लिए काम नहीं करता है, इसके साथ ऐसा करने के लिए कुछ है हो सकता है: $('#myTable > tbody'), पर विचार नहीं tbody तत्व नहीं है। मेरा मानना ​​है कि इंटरनेट एक्सप्लोरर स्वचालित रूप से एक बना देगा लेकिन अन्य ब्राउज़र नहीं होंगे। यह देखने के लिए कि ब्राउज़र आपके लिए क्या करता है, $.support.tbody देखें।

+0

मेरे समाधान के लिए मैंने काम करने के लिए आपके फ़ंक्शन चेंज का उपयोग किया। लेकिन तालिका के एचटीएमएल को बदलकर वास्तव में मेरे लिए इसे बढ़ा दिया। – MarkKGreenway

+0

@nickf 'इस 'ने मेरी समस्या हल की – jeezyfreezy

2

जब मैं $ .प्रत्येक का उपयोग किया है में आपकी मदद के लिए

धन्यवाद() मैं एक समारोह (i, आइटम) का इस्तेमाल किया है, जहां मैं सूचकांक इंगित करने वाला एक पूर्णांक है, और आइटम वास्तविक वस्तु है। इस प्रकार the documentation दिखाता है कि यह किया जा रहा है - विधि को फ़ंक्शन कॉलबैक (indexInArray, valueOfElement) के रूप में वर्णित किया गया है।

3

मैंने देखा कि आपकी तालिका में वास्तव में कोई तत्व तत्व नहीं है। यह आपके मुद्दे का हिस्सा हो सकता है।

$('#myTable > tbody').append..... 

<table id="myTable" border="2" cellpadding="3" cellspacing="3"> 
</table> 

मैं भी है कि आप अपने $ .प्रत्येक() पाश में एक स्ट्रिंग बनाने की सलाह और उसके बाद करना चाहते हैं अपने प्रत्येक पाश के बाद निम्नलिखित:

$('#myTable > tbody').html(string); 

यह हर बार जोड़कर की भूमि के ऊपर कम हो जाएगा आप सरणी पर फिर से शुरू करते हैं।

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