2010-10-15 18 views
15

मैं क्लाइंट साइड (jQuery) में जांचना चाहता हूं कि PHP फ़ंक्शन से डेटा वापस करने के लिए जेसन ऑब्जेक्ट या स्ट्रिंग को अलग-अलग फ़ंक्शन असाइन करना है।कैसे पता चलेगा कि रिटर्न डेटा jQuery और PHP में जेसन या स्ट्रिंग है या नहीं?

उत्तर

43

jQuery का पार्स जेसन एक अपवाद उत्पन्न करेगा यदि जेसन सही प्रारूप में नहीं है। आप कोशिश कॉल ब्लॉक में अपनी कॉल लपेट सकते हैं। (लेकिन याद रखें कि अपने सामान्य कोड के प्रवाह में अपवाद हो रही खराब व्यवहार का है)

data = '{}'; 
try { 
    json = $.parseJSON(data); 
} catch (e) { 
    // not json 
} 

तुम भी देशी JSON.parse() विधि है जो एक SyntaxError अपवाद

फेंकता है आप अपने सामान्य के हिस्से के रूप में बुरा JSON उम्मीद कर रहे हैं, तो उपयोग कर सकते हैं प्रोग्राम वर्कफ़्लो तो आप इसे रीगेक्स के साथ पहले देख सकते हैं, Mic's answer is pretty solid लेकिन आपके मामले में, PHP हमेशा सामान्य स्थिति के तहत वैध जेसन उत्पन्न करना चाहिए। यदि यह अमान्य है तो संभवतः आपके सॉफ़्टवेयर

+0

आपके तेज उत्तर के लिए धन्यवाद लेकिन मैं बुरी आदत से थोड़ा उलझन में हूं। तुम्हारा मतलब है कि मुझे अपनी समस्या को पार्सजन के अपवाद के साथ हल करने की कोशिश नहीं करनी चाहिए? – Devyn

+1

नहीं, सामान्य निष्पादन में फायरिंग अपवाद एक बुरा अभ्यास है। कुछ गलत होने पर निष्पादन केवल तभी निकाला जाना चाहिए (जब आप कुछ नतीजे की उम्मीद नहीं करते हैं) –

+1

यह अभी भी काम कर रहा है? – Fil

-1

जावास्क्रिप्ट में, आप typeof

+3

कैसे टाइप करें (टाइप करें) = टाइपोफ़ (बी) ', जहां' ए' और 'बी' स्ट्रिंग हैं ...? :-) –

+2

यार सलाह के लिए धन्यवाद लेकिन टाइपऑफ मेरे उदाहरण के लिए काम नहीं कर रहा है :) – Devyn

6

वापसी डेटा एक स्ट्रिंग (यानी, एक चरित्र अनुक्रम) का उपयोग कर सकते हमेशा रहा है। लेकिन, अगर आप jQuery को बताते हैं तो आप जेसन प्रतिक्रिया की उम्मीद करते हैं, तो यह आपके लिए स्ट्रिंग को जावास्क्रिप्ट ऑब्जेक्ट में बदलने का प्रयास करेगा।
इंटरनेट पर जावास्क्रिप्ट ऑब्जेक्ट्स को स्थानांतरित करने के लिए कोई समर्पित नेटवर्क प्रोटोकॉल नहीं है।

7
try { 
    jQuery.parseJSON(json) 
    //must be valid JSON 
} catch(e) { 
    //must not be valid JSON  
} 
संबंधित मुद्दे