Подтвердить что ты не робот

Создание JSON динамически с каждым входным значением с помощью jquery

У меня возникла ситуация, когда я хотел бы прочитать некоторые данные из формата JSON через PHP, однако у меня возникли некоторые проблемы с пониманием того, как я должен создать объект Javascript для динамического создания формата JSON.

Мой сценарий выглядит следующим образом:

<input title="QA" type="text" class="email">
<input title="PROD" type="text" class="email">
<input title="DEV" type="text" class="email">

Код Javascript, который я до сих пор просматривал каждый вход, захватывает данные, однако я не могу понять, как обрабатывать здесь.

var taskArray = {};

$("input[class=email]").each(function() {
  var id = $(this).attr("title");
  var email = $(this).val();

  //how to create JSON?

});

Я хотел бы получить следующий результат, если это возможно.

[{title: QA, email: '[email protected]'}, {title: PROD, email: '[email protected]'},{title: DEV, email: '[email protected]'}]

Если электронное письмо получено значением поля ввода.

Любые легкие прокладки на этой ситуации будут очень благодарны!

4b9b3361

Ответ 1

Вот так:

function createJSON() {
    jsonObj = [];
    $("input[class=email]").each(function() {

        var id = $(this).attr("title");
        var email = $(this).val();

        item = {}
        item ["title"] = id;
        item ["email"] = email;

        jsonObj.push(item);
    });

    console.log(jsonObj);
}

Объяснение

Вы ищете an array of objects. Итак, вы создаете пустой массив. Создайте объект для каждого input, используя "title" и "email" в качестве ключей. Затем вы добавляете каждый из объектов в массив.

Если вам нужна строка, сделайте

jsonString = JSON.stringify(jsonObj);

Результат вывода

[{"title":"QA","email":"[email protected]"},{"title":"PROD","email":"[email protected]"},{"title":"DEV","email":"[email protected]"}] 

Ответ 2

Я не думаю, что вы можете превратить объекты JavaScript в строки JSON, используя только jQuery, предполагая, что вам нужна строка JSON в качестве вывода.

В зависимости от браузера, на который вы нацеливаетесь, вы можете использовать функцию JSON.stringify для создания строк JSON.

Подробнее см. http://www.json.org/js.html. Там же вы можете найти парсер JSON для старых браузеров, которые не поддерживают объект JSON изначально.

В вашем случае:

var array = [];
$("input[class=email]").each(function() {
    array.push({
        title: $(this).attr("title"),
        email: $(this).val()
    });
});
// then to get the JSON string
var jsonString = JSON.stringify(array);

Ответ 3

Может быть, это поможет, я бы предпочел бы чистый JS, где это возможно, это значительно улучшает производительность, поскольку у вас не будет много вызовов функций JQuery.

var obj = [];
var elems = $("input[class=email]");

for (i = 0; i < elems.length; i += 1) {
    var id = this.getAttribute('title');
    var email = this.value;
    tmp = {
        'title': id,
        'email': email
    };

    obj.push(tmp);
}

Ответ 4

Вы также можете добиться этого с помощью следующего кода.

 let str = '{" + yourKey + ":'+yourValue+'}';
 str = JSON.parse(str);