2008-12-17 18 views
5

मुझे कोई समस्या है। मैंने एक आंतरिक लिंक का अनुरोध करने के लिए एक स्क्रिप्ट बनाई जो प्रतिक्रिया वापस भेजता है।jQuery JSON को सही ढंग से पार्स नहीं कर रहा है

jQuery.get(callUrl, function(data){ 
       console.log(typeof data); 
       jQuery.each(data.items, function(i,item){    

             console.log(i); 

           }); 
     },'json'); 

और प्रतिक्रिया सर्वर इस तरह दिखता वापस भेजता है कि: यह स्क्रिप्ट कैसा दिखता है

{"items":[    
    { 
    "src": "gallery_item_data_Jc4EaLP6vlwd_large.jpg", 
    "id": "83", 
    "gallery_id": "30", 
    "username": "admin" 
    }] 
} 

मेरे समस्या है जब मैं "डाटा" पार्स अपने प्रकार हमेशा स्ट्रिंग है। मुझे इसकी वस्तु होने की आवश्यकता है ताकि मैं इसे पूछ सकूं और इसे अपनी स्क्रिप्ट के साथ पार्स कर सकूं।

http://docs.jquery.com/Ajax/jQuery.getJSON

इस पृष्ठ पर अनुरोध और मेरे अनुरोध के साथ मुख्य अंतर यह है कि यह का उपयोग करता है: समस्या की तह तक पहुंचने के लिए, मैं jQuery के प्रलेखन पृष्ठ पर उदाहरण के लिए मेरी स्क्रिप्ट की तुलना की कोशिश की है getJSON विधि। जब मैंने अपने सर्वर पर यूआरएल के साथ इसका उपयोग करने की कोशिश की, तो मुझे कोई प्रतिक्रिया नहीं मिली है, इसलिए मुख्य कारण यह है कि मैंने विधि प्राप्त करने का विकल्प चुना, और रिटर्न प्रकार को "जेसन" के रूप में निर्दिष्ट किया।

एक और चीज मैंने कोशिश की: मैंने Flickr feed की जांच की है कि jQuery उदाहरण सामग्री-प्रकार शीर्षलेख को देखने के लिए उपयोग करता है जो यह वापस भेजता है, सोच रहा है कि मेरी फ़ीड में गलत हेडर था, और यह फ़्लिकर फ़ीड पर है:

Content-Type application/x-javascript; charset=utf-8 

यह मेरी खुद की फ़ीड पर बिल्कुल वही हैडर है। तो मैं परेशान हूँ। क्या किसी को पता है कि ये क्यों हो रहा है?

उत्तर

7

JSON यह आसपास कोष्ठक की जरूरत है, तो यह होना चाहिए:

({"items":[    
    { 
    "src": "gallery_item_data_Jc4EaLP6vlwd_large.jpg", 
    "id": "83", 
    "gallery_id": "30", 
    "username": "admin" 
    }] 
}) 

फिर आप getJSON उपयोग करने में सक्षम होना चाहिए क्योंकि इस सबसे आसान तरीका है एक वस्तु के रूप में डेटा प्राप्त करने के लिए है। हालांकि, आप स्ट्रिंग को भी eval() कर सकते हैं और यह एक ऑब्जेक्ट वापस कर देगा।

+0

getJSON काम नहीं कर रहा है अगर JSONP उस अंतराल पर समर्थित नहीं है जो वह मार रहा है। – singpolyma

+0

यह सच है singpolyma, मैं अपने आंतरिक सर्वर पर JSONP कैसे समर्थित करूं? – picardo

+0

मैंने इसे हल किया जब मैंने पैरों के साथ eval() और आस-पास की वापसी वस्तु का उपयोग किया। यह अब GetJSON के साथ भी काम कर रहा है। धन्यवाद दोस्तों! – picardo

1

क्या आपने जावास्क्रिप्ट eval() फ़ंक्शन को कॉल करके उस स्ट्रिंग का ऑब्जेक्ट बनाने का प्रयास किया है? यदि आप पहले अपने कॉलबैक फ़ंक्शन में eval (डेटा) को कॉल करते हैं तो आपको एक ऑब्जेक्ट देना चाहिए।

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