Friday 15 July 2011

javascript - Serialize HTML Form with Embedded Objects -


मेरे पास निम्न फ़ॉर्म हैं ...

  & lt; form id = "my- प्रपत्र "& gt; & Lt; फ़ील्ड का नाम = "पता" & gt; & Lt; input name = "streetAddress" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "सड़क का पता" & gt; & lt; br & gt; & Lt; इनपुट नाम = "शहर" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "शहर" & gt; & lt; p & gt ;, & lt; / p & gt; & Lt; इनपुट नाम = "राज्य" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "राज्य" & gt; & Lt; इनपुट नाम = "ज़िपकोड" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "ज़िप कोड" & gt; & Lt; / fieldset & gt; & Lt; फ़ील्ड का नाम = "आयाम" & gt; & Lt; इनपुट नाम = "लंबाई" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "लंबाई" & gt; & Lt; इनपुट नाम = "चौड़ाई" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "चौड़ाई" & gt; & Lt; input name = "height" type = "text" प्लेसहोल्डर = "ऊंचाई" & gt; & Lt; / fieldset & gt; & Lt; / प्रपत्र & gt;   

मुझे इसे JSON में जेएस के साथ क्रमबद्ध करने की आवश्यकता है, लेकिन मुझे एड्रेस ऑब्जेक्ट में पते के खेतों को विकृत करना होगा, और आयाम के खेतों को एक आयाम ऑब्जेक्ट में विकृत करना होगा। < P> इस तरह से कुछ ...

  {'address': {'streetAddress': '111 कैंडी एलएन', 'शहर': 'लॉस एंजिल्स', ...}, 'आयाम ': {...}}   

आप ऐसा करने के लिए अपने स्वयं के कार्य को लिखने के बिना कैसे यह साफ-साफ, विचारधारा करते हैं? मैंने निश्चित रूप से क्रमबद्ध स्क्रिप्ट को सीरियलाइज किया है, लेकिन एम्बेडेड ऑब्जेक्ट्स को कुछ भी नहीं करना है।

क्या आपने सभी क्षेत्रों को सरणी में?

  & lt; fieldet name = "address" & gt; & Lt; इनपुट नाम = "पता [सड़क का पत्ता]" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "सड़क का पता" & gt; & lt; br & gt; & Lt; इनपुट नाम = "पता [शहर]" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "शहर" & gt; & lt; p & gt ;, & lt; / p & gt; & Lt; इनपुट नाम = "पता [राज्य]" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "राज्य" & gt; & Lt; इनपुट नाम = "पता [ज़िपकोड]" प्रकार = "टेक्स्ट" प्लेसहोल्डर = "ज़िप कोड" & gt; & Lt; / fieldset & gt;   

यह एक उदाहरण है, serializeObject प्लगइन का उपयोग करके

बस उस स्क्रिप्ट को शामिल करें और आप किसी भी रूप को एक बहु स्तरित JSON ऑब्जेक्ट में कनवर्ट कर सकते हैं।

इस प्लगइन का उपयोग करें ... यहां अधिक जानकारी

  (फ़ंक्शन ($) {$ .fn.serializeObject = function () {var self = this, json = { }, Push_counters = {}, पैटर्न = {"मान्य": / ^ [a-zA-Z] [a-zA-Z0-9 _] * (?: \ [(?: \ D * | [a-zA- Z0-9 _] +) \]) * $ /, "कुंजी": / [a-zA-Z0-9 _] + | (? = \ [\]) / जी, "पुश": / ^ $ /, " निश्चित ": / ^ \ d + $ /," नामित ": / ^ [a-zA-Z0-9 _] + $ /}; this.build = function (आधार, कुंजी, मान) {base [key] = value; रिटर्न बेस;}; this.push_counter = function (key) {यदि (push_counters [key] === अपरिभाषित) {push_counters [key] = 0;} वापसी पुश_counters [key] ++;}; $ .each ($ ( यह) .serializeArray (), फ़ंक्शन () {// अमान्य कुंजियों को छोड़ें अगर (! Patterns.validate.test (this.name)) {return;} var k, keys = this.name.match (patterns.key), मर्ज = this.value, reverse_key = this.name; जबकि ((कश्मीर = keys.pop ())! == अपरिभाषित) {// समायोजित करें रिवर्स_की रिवर्स_की = रिवर्स_ Key.replace (नया RegExp ("\\ [" + k + "\\] $"), ''); // धक्का अगर (k.match (pattern.push)) {मर्ज = self.build ([], self.push_counter (रिवर्स_की), मर्ज); } // निश्चित और अगर (k.match (patterns.fixed)) {मर्ज = self.build ([], k, मर्ज); } // नाम else if if (k.match (pattern.named)) {merge = self.build ({}, k, merge); }} Json = $ .extend (सच, जेएसएन, मर्ज); }); वापसी json; }; }) (JQuery);    

No comments:

Post a Comment