Создание 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: 'a@a.com'}, {title: PROD, email: 'b@b.com'},{title: DEV, email: 'c@c.com'}]
где электронная почта приобретается значением поля ввода.
любой свет, пролитый на эту ситуацию, будет очень признателен!
4 ответа:
такой:
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
С помощью "название" и "электронная почта" в качестве ключей. Затем вы добавляете каждый из объектов в массив.Если вам нужна строка, то сделать
jsonString = JSON.stringify(jsonObj);
Пример Вывода
[{"title":"QA","email":"a@b"},{"title":"PROD","email":"b@c"},{"title":"DEV","email":"c@d"}]
Я не думаю, что вы можете превратить объекты 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);
может быть, это поможет, я бы предпочел чистый 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); }