2010-07-19 11 views
6

अरे दोस्तों त्वरित प्रश्न मुझे आईई 8 में निम्न त्रुटि 'लंबाई शून्य है या कोई वस्तु नहीं है', किसी के पास कोई विचार है? प्रतिक्रिया बहुत सराहना ...'लंबाई' शून्य है या कोई वस्तु नहीं है? आईई 8

function refresh() { 
$.getJSON(files+"handler.php?action=view&load=update&time="+lastTimeInterval+"&username="+username+"&topic_id="+topic_id+"&t=" + (new Date()), function(json) { 
    if(json.length) { 
     for(i=0; i < json.length; i++) { 
     $('#list').prepend(prepare(json[i])); 
     $('#list-' + count).fadeIn(1500); 
     } 
     var j = i-1; 
     lastTimeInterval = json[j].timestamp; 
    } 
    }); 

} 
+0

सुनिश्चित करें कि आपके JSON ठीक से प्रारूपित किया गया है। "संपत्ति": "मूल्य" उद्धरण आवश्यक हैं। इसके अलावा, आप किस सिद्धांत का उपयोग कर रहे हैं? – Mark

उत्तर

10

बस वस्तु शून्य या खाली होने के लिए जाँच:

if (json && json.length) { 
    // ... 
} 

चलो गिरोह इस था चमक से स्पष्ट :-)

+0

लॉल मुझे लगता है कि यह तय हो सकता है, मैं वापस देखूंगा कुछ परीक्षण – Scarface

+0

ps के बाद थोड़ा सा में मुझे आपकी तस्वीर पसंद है, क्लासिक पेंटिंग – Scarface

+0

@ ओके महान! हां यह एक अद्भुत पेंटिंग है, हालांकि मुझे गरीब लड़की के लिए थोड़ा खेद है। मैं हमेशा उसे रोते हुए कल्पना करता हूं, जबकि पिताजी के उसके स्लॉब चिल्लाते हैं, "आप श्री अर्नाल्फिनी से शादी कर रहे हैं, और ** ** ** ** ** ** है!" – Pointy

0

एक JSON एक वस्तु है, तो आप एक सरणी की तरह यह इलाज कर रहे हैं। क्या वास्तव में length संपत्ति है? हमें JSON दिखाएं?

आपको इसके बजाय for..in का उपयोग करने की आवश्यकता हो सकती है।

संपादित करें: क्या आप जेएसओएन को बैकएंड संरचना से बना सकते हैं?

({ 
    "foo": [] 
}) 
+0

मैं इस फ़ंक्शन में कच्चे जेसन को कैसे दिखा सकता हूं? – Scarface

+1

यह केवल [ऑब्जेक्ट ऑब्जेक्ट], [ऑब्जेक्ट ऑब्जेक्ट], [ऑब्जेक्ट ऑब्जेक्ट], – Scarface

+0

कहता है जब मैं अलर्ट (जेसन) का उपयोग करता हूं; अगर (json.length) { – Scarface

0

आपका लौटा JSON कैसा दिखता है? यदि आप किसी ऑब्जेक्ट को वापस कर रहे हैं, तो लंबाई को स्पष्ट रूप से परिभाषित नहीं किया जा सकता है, जबकि यदि आप सरणी लौट रहे हैं, तो इसे स्वचालित रूप से परिभाषित किया जाना चाहिए।

+0

मैं इस फ़ंक्शन में कच्चे जेसन को कैसे दिखा सकता हूं? – Scarface

0

पहली बात यह है कि दिमाग में आता है कि लंबाई जो भी जेसन है, उसकी संपत्ति नहीं है। जेसन वैरिएबल वैसे भी क्या होना चाहिए?

1

JSON ऑब्जेक्ट्स (jQuery या अन्यथा द्वारा लौटाया गया) में length संपत्ति नहीं है। आप गुण से अधिक पुनरावृति करने के लिए, सबसे अधिक संभावना है, या संरचना को जानते हैं और बस को बाहर खींच आप क्या चाहते हैं की आवश्यकता होगी:

$.getJSON(..., ..., function(json) { 
    for(var prop in json) { 
    if(!json.hasOwnProperty(prop)) { return; } 
    alert(prop + " : " + json[prop]); 
    } 
}); 

वैकल्पिक रूप से, json2 की तरह एक पुस्तकालय हड़पने और आप के लिए वस्तु stringify कर सकेंगे उत्पादन/डिबगिंग।

1

अंतराल में JSON पॉप तो यह क्लिप और इसलिए हम इसे देख सकते हैं यह पेस्ट करें:

<span id="JSObject2">empty</span> 
यहां से json2.js साथ

: (पृष्ठ के तल पर इसके लिए लिंक) http://www.json.org/js.html

myJSON = JSON.stringify(json); 
$('#JSObject2').text(myJSON); 

इसका उपयोग करके, हम आपकी मदद कर सकते हैं, और आप देख सकते हैं कि आपके पास क्या है!

+0

उस चिह्न के लिए धन्यवाद, शुरुआत में, कुछ भी नहीं है क्योंकि फ़ंक्शन को केवल सेटटाउट अवधि पर नई जानकारी लौटने के लिए डिज़ाइन किया गया है। जब सूचना भेजी जाती है, तो यह उदाहरण के लिए ऐसा लगता है [{"टाइमस्टैम्प": "1279573958", "उपयोगकर्ता": "dfgdfgd", "message": "t", "निर्माता": ""}] – Scarface

+0

इस प्रकार, वहां है कोई लंबाई नहीं लेकिन, अगर आप अलर्ट करते हैं (जेसन [0]। टिमस्टैम्प); आपको अलर्ट बॉक्स में 1279573958 देखना चाहिए। –

+0

हाँ मुझे पता था कि कोई लंबाई नहीं थी, लेकिन इसे किसी भी तरह से लोड पर छोड़कर लोड किया गया था, जब ऐसा नहीं होता था तो मुझे लगा कि यह जावास्क्रिप्ट मानक चर या कुछ लॉल – Scarface

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