मैं एक एपीआई कनेक्शन बनाने का प्रयास कर रहा हूं और एचटीएमएल फॉर्म डेटा को JSON सरणी के रूप में आउटपुट करने की आवश्यकता है। लेकिन मेरा वर्तमान आउटपुट एपीआई दस्तावेज से मेल नहीं खाता।

मैं एक ऐसे बिंदु पर पहुंचने में कामयाब रहा हूं जहां मैं फॉर्म डेटा को JSON अनुकूल प्रारूप में आउटपुट कर रहा हूं लेकिन दस्तावेज़ीकरण प्रारूप से मिलान करने का प्रयास करने से मुझे परेशानी हो रही है। यहां दस्तावेज़ीकरण का लिंक दिया गया है: https://developer.infusionsoft.com /docs/rest/#!/Contact/createContactUsingPOST

const isEmail = element => element.type === 'email';

const formToJSON = elements => [].reduce.call(elements, (data, element) => {

  if (isValidElement(element) && isValidValue(element)) {

    if (isEmail(element)) {
      data[element.name] = (data[element.name] || []).concat(element.value);
    } else {
      data[element.name] = element.value;
    }
  }

  return data;
}, {});

const handleFormSubmit = event => {

  event.preventDefault();
  const data = formToJSON(form.elements);
  dataContainer.textContent = JSON.stringify(data, null, "  ");

};

const form = document.getElementsByClassName('contact-form')[0];
form.addEventListener('submit', handleFormSubmit);
<form class="contact-form">
  <input type="email" placeholder="Email" name="email_addresses" required="required">
  <input type="submit" placeholder="submit" value="submit" name="submit">
</form>

वर्तमान आउटपुट यदि यह एक ईमेल फ़ील्ड है

  "email_addresses": [
    "test@test.com"
  ],

आउटपुट कैसा दिखना चाहिए।

"email_addresses": [
    {
      "email": "string",
      "field": "EMAIL1"
    }
  ],
1
Josh Ratcliffe 18 सितंबर 2019, 11:50

1 उत्तर

सबसे बढ़िया उत्तर

@ टॉम ने उन टिप्पणियों में एक उत्तर पोस्ट किया जो मैंने कोशिश की थी।

data[element.name] = []; var item = {"email": undefined,"field": "EMAIL1"};
item.email = (data[element.name] || []).concat(element.value);
data[element.name].push(item);

निम्नलिखित आउटपुट में परिणाम

"email_addresses": [
    {
      "email": [
        "test@test.com"
      ],
      "field": "EMAIL1"
    }
  ],

(data[element.name] || []).concat को हटाने से अपेक्षित आउटपुट प्राप्त होता है:

"email_addresses": [
    {
      "email": "test@test.com",
      "field": "EMAIL1"
    }
  ],
0
Josh Ratcliffe 18 सितंबर 2019, 09:13