मेरे पास जेसन है:

{id: 10, attr_id: 0, value: "1", extra: null, created_at: "2018-06-05 11:23:34", …}
{id: 11, attr_id: 0, value: "2", extra: null, created_at: "2018-06-05 11:23:50", …}
{id: 12, attr_id: 0, value: "3", extra: null, created_at: "2018-06-05 11:24:06", …}

ये सभी जोंस प्रत्येक फंक्शन पर हैं।

$.each(result, function(index, value) { 
      console.log(value); //I get jsons, which up
      $.each(value, function(i, val) {
         console.log(val.id); //Uncaught TypeError: Cannot read property 'id' of undefined
      });
});

मुझे त्रुटि मिलती है:

Uncaught TypeError: Cannot read property 'id' of undefined.

मैं इस समस्या को कैसे ठीक कर सकता हूं?

अपडेट करें

मुझे प्रत्येक को दूसरा करने की आवश्यकता नहीं है। मुझे बस value.id लिखने की जरूरत है। सभी काम कर रहे हैं, लेकिन मुझे केवल पहली वस्तु मिलती है। मैं सभी वस्तुओं को कैसे प्राप्त कर सकता हूं?

0
Dumitru 5 जून 2018, 14:25

4 जवाब

सबसे बढ़िया उत्तर

आपका जेसन सही प्रारूप में नहीं है, यह नीचे जैसा होना चाहिए:

var result=[{id: 10, attr_id: 0, value: "1", extra: null, created_at: "2018-06-05 11:23:34"},
    {id: 11, attr_id: 0, value: "2", extra: null, created_at: "2018-06-05 11:23:50"},
    {id: 12, attr_id: 0, value: "3", extra: null, created_at: "2018-06-05 11:24:06"}];
    
    $.each(result, function(index, value) {       
      console.log(value.id);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
0
Rajesh Kumar 5 जून 2018, 14:31

वह वैध जेसन प्रारूप नहीं है। जब आप इसे जेएसओएन के रूप में पार्स करते हैं तो आप एक जेसन स्ट्रिंग पर प्रत्येक jQuery का उपयोग कर सकते हैं जो इसे जेएस ऑब्जेक्ट में परिवर्तित करता है

($.parseJSON(json_string))

लेकिन चूंकि आपका स्टिंग वैध जेसन स्ट्रिंग नहीं है, इसलिए आप इसे JSON के रूप में पार्स नहीं कर सकते हैं और इसलिए आपको वह TypeError मिलता है।

सही जेसन स्ट्रिंग होगी:

'[{"id": 10, "attr_id": 0, "value": "1", "extra": null, "created_at": "2018-06-05 11:23:34"}, {"id": 10, "attr_id": 0, "value": "1", "extra": null, "created_at": "2018-06-05 11:23:34"}]'

आप जेसन में अक्षर या पहचानकर्ता का उपयोग नहीं कर सकते हैं, यह तारों से बना एक स्ट्रिंग है।

0
shahburhan 5 जून 2018, 14:44

ऐसा करने के लिए आपको jQuery की आवश्यकता क्यों होगी, बस वेनिला जावास्क्रिप्ट का उपयोग करें:

result.forEach(value => {
    console.log(value);
    if ("id" in value) {
      console.log(id + ": " + value[id]);
    }
});

शांति।

0
JeanSaigne 5 जून 2018, 14:35

कारण यह है कि परिणाम प्रकार ऐरे का है, जबकि मूल्य प्रकार वस्तु है। यदि इरादा केवल प्रत्येक पंक्ति में आईडी खोजने का है, तो आपको प्रत्येक लूप में एक आंतरिक की आवश्यकता नहीं है।

    $.each(result, function(index, value) { 
       console.log(value.id); 
        });

अन्यथा, आपको मान (ऑब्जेक्ट प्रकार) को ऐरे प्रकार में बदलने की आवश्यकता है।

0
Smriti Singh 5 जून 2018, 14:39