2012-02-09 12 views
29

संपादित करें: मुझे इस प्रश्न के साथ "प्रसिद्ध प्रश्न" बैज मिल गया है, इसलिए मुझे लगा कि मैं इसके पास वापस आऊंगा और चिपकने वाले लोगों के लिए जवाब देने के लिए मेरे साथ क्या हुआ बिल्कुल अभी।jQuery.getJSON और jQuery.parseJSON वापसी [ऑब्जेक्ट ऑब्जेक्ट]?

मूल रूप से, मैं JSON के लिए नया था। JSON एक वस्तु है (जाहिर है), क्योंकि इसमें सभी प्रकार की चीज़ें शामिल हैं! तो मैं "हे, जावास्क्रिप्ट, बस इस जेएसओएन डेटा के साथ एक चेतावनी पॉप अप" की तरह था, यह मुझे एक स्ट्रिंग के रूप में JSON डेटा देने की उम्मीद करता था। लेकिन जावास्क्रिप्ट ऐसा नहीं करता है (जो अच्छा है!), तो यह "अरे, हम वस्तुओं को प्रदर्शित करते हैं, [ऑब्जेक्ट ऑब्जेक्ट]" जैसा था।

जो मैंने किया था वह alert(obj.DATA[0][1]) जैसा कुछ था और यह मुझे उस वस्तु का थोड़ा सा दिखाता।

जो मैं वास्तव में चाहता था उसे सत्यापित करना था कि मैं अच्छा JSON डेटा बना रहा था, जिसे मैं JSON.stringify के साथ चेक कर सकता था।

वैसे भी, हमारे नियमित रूप से निर्धारित प्रश्नों पर वापस!


मैं एक ajax कॉल के साथ कुछ JSON डेटा प्राप्त करने के लिए कोशिश कर रहा हूँ, लेकिन jQuery मेरी JSON पसंद करने के लिए प्रतीत नहीं होता।

मैं की तरह कुछ करते हैं:

function init2() { 
    alert("inside init2"); 
    jQuery.ajax({ 
     url: "/Mobile_ReportingChain.cfm", 
     type: "POST", 
     async: false, 
     success: function (data) { 
      alert(data); 
      var obj = jQuery.parseJSON(data); 
      alert(obj); 
     } 
    }); 
} 

मैं चेतावनी (डेटा) से के रूप में इस मिल:

{"COLUMNS":["MFIRST_NAME","MLAST_NAME","MMDDL_NAME","MEMPLY_ID","MAIM_NBR","EMPLY_ID"], 
    "DATA":[ 

["FNAME1   ","LNAME1     ","MI1    ","000-14-7189","026-0010","000-62-7276"]  

,["FNAME2   ","LNAME2     ","MI2    ","000-01-2302","101-1850","000-14-7189"] 

,["FNAME3   ","LNAME3     ","MI3    ","000-91-3619","102-1000","000-01-2302"]  

,["FNAME4   ","LNAME4     ","MI4    ","000-25-9687","102-1000","000-91-3619"] 

]} 

जो JSONLint कहते वैध json है। चेतावनी (obj) मुझे इस देता है, तथापि:

[object Object] 

जोड़ने dataType: "json" या "text json" बस इसे alert(data) पर [object Object] रिपोर्ट बनाता है।

मैं वास्तव में यह समझना चाहता हूं, क्या किसी को पता है कि यह ऐसा क्यों कर रहा है? मैं jQuery पर बहुत नया हूं, मेरा लक्ष्य प्रत्येक कॉलम के लिए एक सरणी प्राप्त करना है। मैं जिस कोड का उपयोग कर रहा हूं, वह एक अलग पृष्ठ पर काम करता है जो ऐसा लगता है, जो मुझे सबसे ज्यादा परेशान कर रहा है।

+1

आप किसी ऑब्जेक्ट को परिवर्तित और फिर उस वस्तु के साथ चेतावनी बुला रहे हैं। यह तब कहता है हे यह एक वस्तु है। सब कुछ काम कर रहा है जैसा कि चाहिए :) –

उत्तर

32

alert() फ़ंक्शन केवल टेक्स्ट की एक स्ट्रिंग प्रदर्शित कर सकता है। इसके एकमात्र पैरामीटर के रूप में यह एक स्ट्रिंग या ऑब्जेक्ट लेता है। ऑब्जेक्ट को तब एक स्ट्रिंग में परिवर्तित किया जाएगा जिसे प्रदर्शित किया जा सकता है।

jQuery के माध्यम से JSON लाने पर, $.ajax() विधि स्वचालित रूप से JSON को पार्स कर देगी और इसे आपके लिए जावास्क्रिप्ट ऑब्जेक्ट में बदल देगी। आपका data वैरिएबल एक जावास्क्रिप्ट ऑब्जेक्ट के लिए है, न कि एक JSON स्ट्रिंग जैसा कि कोई उम्मीद कर सकता है।

alert() केवल data ऑब्जेक्ट को अलर्ट करने का प्रयास करते समय स्ट्रिंग प्रदर्शित कर सकता है, तो आपकी ऑब्जेक्ट इसकी स्ट्रिंग प्रस्तुति में बदल जाएगी। जावास्क्रिप्ट ऑब्जेक्ट का स्ट्रिंग प्रस्तुति [object Object] है।

डीबग प्रयोजनों के लिए आप console.log(data) का उपयोग कर सकते हैं। फिर आप ऑब्जेक्ट और इसकी सामग्री को अपने ब्राउज़र डेवलपर टूल में कंसोल के माध्यम से देख सकते हैं।

function init2() { 
    jQuery.ajax({ 
     url: "/Mobile_ReportingChain.cfm", 
     type: "POST", 
     dataType: "json", 
     async: false, 
     success: function (data) { 
      console.log(data); 
     } 
    }); 
} 

आप किसी कारण से अभी भी JSON-डेटा से अवगत कराना चाहते हैं, तो आप अपने data वस्तु एक JSON-स्ट्रिंग में फिर से चालू करना होगा। कि आप JSON.stringify का उपयोग कर सकते करने के लिए:

alert(JSON.stringify(data)); 
+0

वह जल्दी था, और मैं मूर्खतापूर्ण महसूस करता हूं। सभी को धन्यवाद, आप सबसे तेज़ थे और मुझे console.log (डेटा) की जानकारी दी, तो आप जवाब जीत गए! – Rob

+1

@Rob हम हर दिन कुछ नया सीखते हैं! –

+0

इस समाधान के 1000 समाधान खोजने के बाद! धन्यवाद! – Nopzen

2

यह वह जगह है यह कैसे काम चाहिए था। आपका JSON एक जावास्क्रिप्ट ऑब्जेक्ट बन जाता है। फिर आप उस ऑब्जेक्ट को नियमित जावास्क्रिप्ट ऑब्जेक्ट के रूप में जोड़ सकते हैं।

data.COLUMNS उदाहरण के लिए एक सरणी वापस करनी चाहिए।

10

यह एक स्ट्रिंग

var obj = $.parseJSON(JSON.stringify(data)); 
+0

इससे मुझे एक अलग समस्या के साथ मदद मिली। धन्यवाद! : डी –

2

[object Object] एक जावास्क्रिप्ट वस्तु की स्ट्रिंग प्रतिनिधित्व है चाहता है।

ऑब्जेक्ट के गुणों तक पहुंचने का प्रयास करें।

alert(data.COLUMNS[0]); 
4

कोशिश console.log को उस वस्तु भेज दिया। आपको एक स्पष्ट तस्वीर मिल जाएगी जिसमें इसमें क्या शामिल है।

इसके अलावा, dataType: 'json' डालें और parseJSON हटाएं क्योंकि यह सब वही है।

+0

हाँ, एक बार मुझे पता था कि मुझे JSON ठीक से मिल रहा था, मैंने इसे $ .getJSON के साथ बदल दिया। – Rob

2

jQuery.parseJSON जेसन स्ट्रिंग को जेसन ऑब्जेक्ट में कनवर्ट करेगा ताकि अलर्ट (ओबीजे) आपको [object Object] दिखाएगा क्योंकि यह एक ऑब्जेक्ट है।

यदि आप देखना चाहते हैं कि obj में console.log(obj) का उपयोग करें और फिर कंसोल लॉग संदेश देखें।

0

$.getJSON("UI/entidades.json.php", function(data){ 
 
\t result = JSON.stringify(data); 
 
\t alert(result) 
 
\t console.log(result) 
 
})

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