将变量值插入ajax发布数据

时间:2017-01-11 18:55:18

标签: javascript html ajax variables

我创建了一个带有文本框和下拉菜单的表单,在我的代码中我创建了一个脚本,当点击"发送表单"

时会调用该脚本

可以说我的字段为:firstNamelastNamecountry(下拉列表)

这是脚本:

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");
  });
}

我想插入这3个变量' "数据"内的值像这样的字符串:

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

依旧......

在下拉菜单中,我假设它将显示为数组。如何将变量包含在内?

3 个答案:

答案 0 :(得分:0)

首先创建一个空对象并将数据插入其中。 接下来使用JSON.strigify()将其转换为JSON blob,然后再将其发送到服务器。

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

var settings = {
    ....,
    data: JSON.stringify(data)
};

答案 1 :(得分:0)

由于您已经在使用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'
    }
  }
});

答案 2 :(得分:0)

解决

这是适合我+$("#firstName")[0].value+的语法,这是代码:

 "data":"{\r\n\deployment\: {\r\n revision\:"+"\""+$("#firstName")[0].value+"\","+"\r\n"