2013-10-19 12 views
5

में वस्तु गुण तक नहीं पहुंच सकता जब मैं इस कोड को फोन:jQuery AJAX कॉल

{"userName":"2","email":"2","firstName":"2","lastName":"2","isAdmin":"0","isEnabled":"1"} index.php:162 
undefined 

पहले console.log(data); आउटपुट सही ढंग से:

console.log(data); 
console.log(data.email); 

मैं इस परिणाम मिलता है। फिर, मैं data ऑब्जेक्ट की email संपत्ति का उपयोग करना चाहता हूं, और ऐसा करने के लिए मैं console.log(data.email); का उपयोग करता हूं। हालांकि, जैसा कि आप ऊपर देख सकते हैं, यह कहता है कि यह "अपरिभाषित" है।

मैं इस संपत्ति (या किसी भी संपत्ति) तक क्यों नहीं पहुंच सकता? नोट: मैंने data['email'] भी कोशिश की है जो काम नहीं करता है।

उत्तर

4

मुझे एहसास नहीं हुआ कि jQuery किसी ऑब्जेक्ट पर लौट आए JSON को स्वतः पार्स नहीं करता है। यह सिर्फ एक JSON स्ट्रिंग था। ठीक करने के लिए, मैं सिर्फ यह करना ही था:

data = JSON.parse(data); 

क्रॉस-ब्राउज़र:

data = $.parseJSON(data); 
+2

आप भी इसे jQuery बताकर ठीक कर सकते हैं अपने सर्वर है: और यह तय कर दी है, मैं "डाटा" नई सरणी बनाने के लिए और फिर दोहराने के द्वारा कि सरणी में डेटा वस्तु के प्रत्येक मूल्यों डाल की तरह निम्नलिखित की जरूरत जेएसओएन लौट रहा है। 'डेटा टाइप:" जेसन "या सर्वर की प्रतिक्रिया सामग्री-प्रकार को एप्लिकेशन/जेसन" ' –

+0

पर सेट करना धन्यवाद, मैंने सोचा कि यह 'सामग्री टाइप' था इसलिए यह काम नहीं कर रहा था! मुझे आपके समाधान को बेहतर पसंद है। – user1477388

+2

आपको 'JSON.parse()' के बजाय '$ .parseJSON' का उपयोग करना चाहिए क्योंकि jquery इसे क्रॉस-ब्राउज़र तरीके से संभालता है। – Yang

0

मेरे मामले में, मैं console.log द्वारा वस्तु दिखा सकता है, लेकिन मैं किसी भी विशेषता उपयोग नहीं कर सका एक साधारण बात के लिए: मैं यह महसूस नहीं कर रहा था कि मेरा JSON गलत तरीके से संरचित था, एक एकल वस्तु के साथ एक सरणी के रूप में। फिर मैं एक सूचकांक का उपयोग कर अपनी विशेषता का उपयोग कर सकता था।

console.log(data.email);

undefined

लेकिन फिर मैं कोशिश की ...

console.log(data[0].email);

[email protected]

मैं बस अपना मॉडल तय की और यह पूरी तरह काम करता है। मेरे सहयोगी हारून लिल के लिए धन्यवाद!

0

मुझे एक ही समस्या का अनुभव हुआ है।

var arrayTest = []; 

$.each(data, function (index, value) { 
    arrayTest["email"] = value.email; 
    arrayTest["andsoforth"] = value.andsoforth; 
    //etc... 
}); 

// Now retrieve data by using arrayTest 
console.log(arrayTest["email"]); 
संबंधित मुद्दे