2012-01-26 22 views
7

मैं सॉकेट की तरह एक डेटा संरचना हैएक jQuery अजाक्स में एक JSON डेटा पैकेट serializing पोस्ट

var s = { 
    "a": "foo", 
    "b": 5, 
    "c": {"d": "a long string"}, 
    "e": { 
     "f": { 
      "g": { 
       "h": [1, 0, -2.1, 1.43] 
      } 
     }, 
     "i": { 
      "j": { 
       "k": [-3.2, 3.003, 0, 0] 
      } 
     } 
    } 
}; 

मैं "एक" संग्रहीत करना चाहते हैं, "बी", "सी", और "ई" कुंजी डेटाबेस तालिका में परिवर्तनीय s ताकि मैं उन्हें दोबारा पुनर्निर्माण कर सकूं। मैं एक jQuery अजाक्स पोस्ट के माध्यम से s भेज रहा हूं। मूल्यों को केवल सादे पाठ के रूप में डाला और संग्रहीत किया जाएगा ("बी" को छोड़कर जो हमेशा एक संख्या है)।

ajax: { 
    url: uri, 
    type: "POST", 
    data: s, 
    dataType: "json", 
    success: function(data, status) { .. } 
} 

यहां समस्या है जो मैं सामना कर रहा हूं। फायरबग में मैं अपने पोस्ट पैरामीटर देख सकता हूं ... वे वास्तव में गड़बड़ कर रहे हैं। लगता है डेटा की तरह प्रत्येक तत्व (एक गहरी क्रमबद्धता की तरह थोड़े) के स्तर पर, जबकि मैं की तरह

e={"f":{"g":{"h":[1,0,-2.1,1.43]}},"i":{"j":{"k":[-3.2,3.003,0,0]}}} 

अद्यतन कुछ के लिए उम्मीद कर रही थी पर धारावाहिक किया गया है: इसके बजाय, मैं निम्नलिखित (मैं नहीं छोड़ा जाएगा है हो रही है नीचे स्ट्रिंग तो यह अधिक पठनीय है)

a=foo&b=5&c[d]=a long string&e[f][g][h][]=1&e[f][g][h][]=0&e[f][g][h][]=-2.1&e[f][g][h][]=1.43 

शायद मैं इस गलत तरीके से कर रहा हूँ, तो एक बेहतर तरीका करने के लिए मेरा मार्गदर्शन कर सकते हैं।

उत्तर

9

स्ट्रिंग में डेटा ऑब्जेक्ट को क्रमबद्ध करने और इसे पोस्ट करने के लिए JSON.stringify विधि का उपयोग करें। सर्वर की तरफ बस इसे अपने डीबी में स्टोर करें। इस

ajax: { 
    url: uri, 
    type: "POST", 
    data: { data: JSON.stringify(s) }, 
    dataType: "json", 
    success: function(data, status) { .. } 
} 

लगभग सभी आधुनिक ब्राउज़र JSON मूल रूप से समर्थन करते हैं। उन ब्राउज़रों के लिए जिनके पास यह मूल रूप से नहीं है, आप http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js

+0

+1 से आवश्यक जेएस को विशेष रूप से पुराने ब्राउज़र के लिए JSON2.js से जोड़ने के लिए शामिल कर सकते हैं। –

+0

मैं निश्चित रूप से निश्चित हूं कि आप उस डेटा ऑब्जेक्ट को एन्कोड करने जा रहे हैं, क्योंकि आप s – Joe

+0

पर स्ट्रिंग को कॉल कर रहे हैं यदि डेटा मान एक स्ट्रिंग है, तो 'jQuery' केवल यूआरआई एन्कोडिंग को HTTP पर स्थानांतरित करने के लिए पर्याप्त सुरक्षित बनाने के लिए करता है। मुझे नहीं लगता कि यह स्ट्रिंग को एन्कोड करेगा। – ShankarSangoli

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