JSON.parse boolean type

297
08 марта 2022, 02:40

послылаю с бекенда(.net) объект user с полем boolean IsActive в js принимаю

init: function (data){
if (data != null) {
                UserHelper.fillFields(JSON.parse(data), dataAdapter.records);
            }
}

иннициализирую поля на UI форме

        fillFields: function (data, ddlSource) {
 if (data == null) {              
                $("#isActive").prop('checked', true);
                return;
            }
            var isTrue = (data.IsActive == 'true');
            $("#isActive").prop('checked', isTrue);
}

Все поля заполняются как надо кроме checkbox. Пробовал и как выше и просто $("#isActive").prop('checked', data.IsActive); не работает. в c# поле имеет тип boolean. в каком виде js парсит его?

попробовал для интереса $("#isActive").prop('checked', true); тоже не работает. как задавать чекбоксу состояние?

Answer 1

Так как в C# поле имело тип boolean, то и в сериализованном виде это поле так же было бы типом boolean.

В примере в вопросе, в строке

data.IsActive == 'true'

Происходит сравнение boolean и строки

console.log(false == 'true') 
console.log(true == 'true')

Как можно убедиться, результат всегда false.

Вместо этого можно сравнивать без кавычек

data.IsActive == true

Либо использовать сразу data.IsActive в нужном месте.

Answer 2

дело не в парсинге, а в js функции

$('#isActive').jqxCheckBox({ checked: data.IsActive });

заработала данная конструкция(браузер Хром)

READ ALSO
Сортировка массива по цене

Сортировка массива по цене

Есть массивЕго нужно отсортировать по возрастанию и убыванию при нажатии на кнопку и отобразить в id='shop'

66
Поиск по массиву в объекте JavaScript

Поиск по массиву в объекте JavaScript

Есть массив объектов, который имеет в себе ещё один массив, по которому нужно совершить поискСтруктура данных выглядит вот так:

89
Обработать нажатие клавиши по таймеру

Обработать нажатие клавиши по таймеру

Пытаюсь реализовать живой поиск на Angular

118