2017-01-11 22 views
1

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

Допустит, мое поле является : 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"); 
    }); 
} 

Я хотел бы, чтобы вставить значения этих 3 переменных внутри „данных“ строка, как так:

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

и так далее ...

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

+1

... почему вы передавая данные, как, что ? –

+0

@MikeMcCaughan Hi Mike, вот так мне нужно отправить свои данные, иначе его не будет принято , поэтому мне нужно только вставить мою переменную, чтобы отправить их в строку * data *, которая будет отправлена ​​alltogether. –

+0

Да, я думаю, мне было интересно, почему, если вам нужно построить свой собственный JSON, вы беспокоитесь о '\ r \ n' ... –

ответ

0

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

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

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

Привет, Мне нужно отправить данные как есть, одна переменная каждый раз. Это означает «данные»: «{\ r \ n \" deployment \ ": {\ r \ n \" revision \ ": + 'firstName'' Не знаете, что такое синтаксис для добавления переменной –

+0

@EliasE Вы можете уточнить свой вопрос и полезную нагрузку, которую хотите отправить. –

+0

@ Sushanth, Привет, Это информация, которую я бы хотел отправить. 'развертывания: { редакция: ПгвЬЫат, изменений: LastName, Описание: страна, пользователя: пользователь }' вопроса является сервер принимает определенный синтаксис (с '\ п \ г "строкой"'), когда я пытался изменить, он не дошел до сервера, –

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

+0

Привет, @Mr. Polywhirl Спасибо за ваш ответ, после использования вашего кода я получил ошибку 400 - плохой запрос, я думаю, что это может быть проблема синтаксиса, которую сервер ожидает получить. –

0

решаемые

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

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