2012-03-18 10 views
10

मैं एक सर्वर पर कुछ अनुरोध भेज रहा हूँ और यह मेरे लिए उत्तर यह है:जावास्क्रिप्ट में JSON (सर्वर प्रतिक्रिया) को कैसे पढ़ा जाए?

{"COLUMNS":["REGISTRATION_DT","USERNAME","PASSWORD","FNAME","LNAME","EMAIL","MOBILE","FACEBOOK_ID"],"DATA":[["March, 17 2012 16:18:00","someuser",somepass,"somename","somesur","someemail",sometel,"someid"]]} 

मैंने बहुत कोशिश की, लेकिन कुछ भी नहीं है मेरे लिए काम कर रहा है!

var xml2 = this.responseData; 
var xml3 = xml2.getElementsByTagName("data"); 
Ti.API.log(xml3.FNAME); 

इस कोड के लिए मुझे "शून्य" मिलता है।

किसी भी मदद की सराहना की जाएगी!

उत्तर

5

आप JSON प्रारूप का उपयोग करने की कोशिश कर रहे हैं, तो आपकी समस्या [...] के भीतर डेटा भी जोड़ों में होने की जरूरत है, और {...}here की तरह में वर्गीकृत किया है।

उदाहरण के लिए,

{ 
     "sales": [ 
     { "firstname" : "John", "lastname" : "Brown" }, 
     { "firstname" : "Marc", "lastname" : "Johnson" } 
     ] // end of sales array 
    } 

तो तुम हो सकता है: सर्वर आप कुछ है जो आप res के रूप में उल्लेख भेज रहा है

{"COLUMNS": [ 
    {"REGISTRATION_DT" : "19901212", "USERNAME" : "kudos", "PASSWORD" : "tx91!#1", ... }, 
    {"REGISTRATION_DT" : "19940709", "USERNAME" : "jenny", "PASSWORD" : "fxuf#2", ... }, 
    {"REGISTRATION_DT" : "20070110", "USERNAME" : "benji12", "PASSWORD" : "rabbit19", ... } 
] 
} 

हैं, तो आप सिर्फ यह कर सकते हैं में यह पार्स करने के लिए अपने जावास्क्रिप्ट:

var o=JSON.parse(res); 

आप फिर प्रत्येक उदाहरण के माध्यम से चक्र के भीतर चक्र कर सकते हैं lumns तरह इस प्रकार है:

for (var i=0;i<o.COLUMNS.length;i++) 
{ 
     var date = o.COLUMNS[i].REGISTRATION_DT; .... 
} 
+0

लाइन var o = JSON.parse (res) पर वाक्यविन्यास त्रुटि दे रहा है; कृपया सुझाव दे। मैं सरल जावास्क्रिप्ट और आईई 8 –

1

http://jsonlint.com/ में बाहर अपने कोड का परीक्षण, यह कहना है कि अपने सर्वर की प्रतिक्रिया एक मान्य JSON स्ट्रिंग नहीं है।

साथ ही, मैं http://api.jquery.com/jQuery.parseJSON/

3

JSON ऑब्जेक्ट के बस किसी भी सामान्य JavaScript ऑब्जेक्ट या शब्दकोशों

// You can do it this way 
var data = this.responseData["DATA"] 
// Or this way 
var data = this.responseData.DATA 

अपने मामले, स्तंभों में और डेटा दोनों सरणियों हैं की तरह काम jQuery.parseJSON बाहर सुझाव देते हैं, इसलिए ऐसा लगता है कि आप COLUMNS में "FNAME" तत्व से मेल खाने वाले डेटा से तत्व प्राप्त करने का प्रयास कर रहे हैं?

var columns = this.responseData["COLUMNS"]; 
var data = this.responseData["DATA"][0]; 

for(var i=0; i<columns.length; i++){ 
    if(columns[i] == "FNAME"){ 
     Ti.API.log(data[i]); 
    } 
} 

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

var columns = this.responseData["COLUMNS"]; 
var data = this.responseData["DATA"][0]; 
var realData = {}; 

for(var i=0; i<columns.length; i++){ 
    realData[columns[i]] = data[i]; 
} 

// Now you can access properties directly by name. 
Ti.API.log(data.FNAME); 

अधिक संपादित करें: मेरे उत्तर केवल, डेटा में पहली पंक्ति पर विचार क्योंकि मैं मूल रूप से पढ़ने में भूलना। दूसरों को संसाधित करने के तरीके को समझने के लिए मैं इसे आपके पास छोड़ दूंगा।

+1

के साथ प्रयास कर रहा हूं यदि आपके पास निकलने वाले प्रारूप की तरह दिखने के लिए सर्वर का जवाब बदलने का कोई तरीका है, तो मैं इसकी अनुशंसा करता हूं। आपके पास अब प्राप्त प्रारूप के साथ काम करने के लिए बहुत भाग्यशाली है। –

3

उस लिंक को देखें। READ JSON RESPONSE

यह सही है।

+0

क्या आपके पास PHP का उपयोग कर JSON पढ़ने के लिए एक समान संसाधन है? –

0

तुम यहाँ पता लगाने के लिए [Response object] से पढ़ने के लिए (के रूप में मैंने किया था) की कोशिश कर रहा हो गया है - यह है कि क्या मदद कर सकते हैं: - आप लाने कंसोल में प्रवेश करने से पहले res.json() के बारे में भूल नहीं है का उपयोग करता है, तो

fetch(`http://localhost:3000/data/${hour}`, { 
     method: 'get' 
    }) 
    .then(res => { 
     return res.json() 
     }) 
    .then((response) => { 
     console.log('res: ' + JSON.stringify(response)) 
    }) 
-1

बस JSON.parse(serverResponse)

+0

यह एक बहुत छोटा जवाब है। यह एक टिप्पणी के रूप में और अधिक उपयोगी होगा। कृपया अपने समाधान की व्याख्या का विस्तार करें। उदाहरण के लिए, 'serverResponse' क्या है? ओपी ने इस तरह के एक चर का उल्लेख नहीं किया है, और आप इसे समझा नहीं है। –

+0

यह प्रश्न का उत्तर नहीं प्रदान करता है। किसी लेखक से स्पष्टीकरण की आलोचना या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाली पोस्ट/17080 9 18) –

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