Проблема с преобразованием массива в json в JavaScript - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть этот код:

var fields = [];
$('input').each(function(){
  var name = $(this).attr("name");
  fields[name] = $(name).val();
});

И я хочу преобразовать переменную fields в строку json, но когда я использую JSON.stringify, я получаю (используя console.log) только: []

Как я могу просто преобразовать массив fields в json строку?

Ответы [ 3 ]

2 голосов
/ 21 февраля 2020

Хорошо, проблема была в следующей строке:

 fields[name] = $(name).val();

Я изменил name на this:

 fields[name] = $(this).val();

И работал так, как я хочу.

1 голос
/ 21 февраля 2020

Если вы хотите, чтобы текстовые строки, такие как имена полей (в отличие от чисел), использовались в качестве имен свойств, вам нужен объект , а не массив. Инициализируйте fields до {} вместо [].

. Сериализация массива JSON будет включать только свойства, ключи которых являются числами, от нуля до значения .length (минус один).

0 голосов
/ 21 февраля 2020

Только что сделал одну поправку, используйте объект вместо массива:

    var fields = {};
    $('input').each(function(){
     var name = $(this).attr("name");
     fields[name] = $(name).val();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...