Я создал форму с текстовыми полями и выпадающим меню, внутри моего кода я создал скрипт, который будет вызываться при нажатии «Отправить форму»

Допустим, мое поле: firstName, lastName, country (раскрывающийся список)

Вот сценарий:

function f1() {
  var settings = {
    "async": true,
    "url": "https://api.TheSite.com/v2/applications/123456789/newJson.json",
    "method": "POST",
    "headers": {
      "x-api-key": "123456789123456",
      "content-type": "application/json",
    },
    "processData": false,
    "data": "{\r\n  \"deployment\": {\r\n    \"revision\": \"string\",\r\n    \"changelog\": \"string\",\r\n    \"description\": \"string\",\r\n    \"user\": \"string\"\r\n  }\r\n}"
  }

  $.ajax(settings).done(function(response) {
    console.log(response);
    alert("The Form Was Sent");
  });
}

Я хотел бы вставить значения этих трех переменных в строку «data» следующим образом:

"data": "{\r\n  \"deployment\": {\r\n    \"revision\": \`firstName
\",\r\n    \"changelog\": \"`lastName

И так далее...

Я предполагаю, что в выпадающем меню он будет отображаться в виде массива. Как мне включить мою переменную внутри?

1
Wemos 11 Янв 2017 в 21:55

3 ответа

Лучший ответ

Сначала создайте пустой объект и вставьте в него данные. Затем используйте JSON.strigify(), чтобы преобразовать его в JSON blob, прежде чем отправить его на сервер.

var data = {};
data.deployment = {};
data.deployment.revision = firstName;
data.deployment.changelog = lastName;

var settings = {
    ....,
    data: JSON.stringify(data)
};
0
Sushanth -- 11 Янв 2017 в 22:15

РЕШИТЬ

Это синтаксис, который работал для меня +$("#firstName")[0].value+, и это код:

 "data":"{\r\n\deployment\: {\r\n revision\:"+"\""+$("#firstName")[0].value+"\","+"\r\n"
0
Wemos 13 Янв 2017 в 13:32

Поскольку вы уже используете jQuery для выполнения вашего AJAX-запроса, вы должны знать, что вы можете фактически передать собственный объект JavaScript в часть данных запроса. Вам не нужно преобразовывать его в строку JSON. Если вы хотите, вы можете просто зачеркнуть его.

Вы можете установить параметры запроса по умолчанию, а затем объединить их с данными, которые вы хотите запросить.

var defaults = {
  url: 'https://api.TheSite.com/v2/applications/123456789/newJson.json',
  method: 'POST',
  contentType: 'application/json',
  headers: {
    'x-api-key': '123456789123456',
  },
  processData: false,
  async: true
};

function makeXhrRequest(config) {
  var xhrRequest = $.extend(true, defaults, config);

  // If you want to convert the request to a json String.
  //xhrRequest.data = JSON.stringify(data);

  $.ajax(xhrRequest).done(function(data, textStatus, jqXHR) {
    console.log(data);
    alert("The Form was sent...");
  });
}

var $myForm = $('form[name="my-form"]');
makeXhrRequest({
  data : {
    deployment : {
      revision    : $myForm.find('input[name="firstname"]').val(),
      changelog   : $myForm.find('input[name="lastname"]').val(),
      description : 'string',
      user        : 'string'
    }
  }
});
0
Mr. Polywhirl 12 Янв 2017 в 13:34