Я хочу отправить два массива $scope.candidates и $scope.managers в качестве POST для некоторого PHP, который я буду кодировать для сервера. Я настоятельно предпочитаю интерфейс JSON и подумал объединить их в один объект JSON.

    var JsonString = {'candiates' : JSON.stringify($scope.candidates),
                      'managers'  : JSON.stringify($scope.managers)
                     };

Не генерирует действительный JSON. Как мне добиться того, чего я хочу?

1
Mawg says reinstate Monica 30 Авг 2017 в 17:35

4 ответа

Лучший ответ

Я не совсем уверен, что вы хотите? Вы хотите, чтобы JSON-сериализованные строки были встроены в JSON?

var JsonString = JSON.stringify({
  'candiates' : JSON.stringify($scope.candidates),
  'managers'  : JSON.stringify($scope.managers)
};)

Или вы просто хотите один большой объект JSON с candidates и managers в виде списков JSON?

var JsonString = JSON.stringify({
  'candiates' : $scope.candidates,
  'managers'  : $scope.managers
};)
1
Alec 30 Авг 2017 в 14:38

Создайте один объект и зафиксируйте его!

var both = {
   candidates : $scope.candidates,
   managers : $scope.managers
}

Тогда:

var JsonString = JSON.stringify(both)

Помните, что JSON.stringify работает с объектами, а не с коллекциями или строками.

1
DanteTheSmith 30 Авг 2017 в 14:54

JSON - это формат, здесь нет «объекта JSON».

Создайте весь объект, который вы хотите отправить, а затем сгенерируйте строку JSON:

var myObj= {
  candidates: $scope.candidates,
  managers: $scope.managers
}

var myJson=JSON.stringify(myObj);
4
Pablo Lozano 30 Авг 2017 в 15:01

Почему бы нет:

var JsonString = JSON.stringify({ 
      candidates: $scope.candidates, 
      managers: $scope.managers 
    });
1
Matteo Ragni 30 Авг 2017 в 14:38