Я не могу получить доступ к внутренним данным моего объекта в js - PullRequest
1 голос
/ 02 июля 2019

В моем интернет-магазине я хочу добавить заказ клиента по товару в заказ. Сначала я нажимаю и добавляю предмет из базы данных. Затем я передаю выбранный предмет в JS.

$('#addItem').click(function () {
   let itemData = $('#item').val();

   console.log(itemData);
});

это вывод:

{"id":1,"business_id":401,"name":"\u067e\u06cc\u0631\u0627\u0647\u0646","discount_model":1,"special_date":0,"hot_offer":0,"percent":30,"buy_quantity":null,"prize_quantity":null,"prize_name":null,"floor_buy":null,"discount_percent":null,"is_active":1,"created_at":"2019-07-02 06:43:23","updated_at":"2019-07-02 06:44:51"}

Теперь я хочу itemData.name или itemData ['name'], но он говорит: undefined!?

Как я могу получить доступ к реквизиту?

Ответы [ 3 ]

3 голосов
/ 02 июля 2019

Просто вы не можете вызывать свойства из строки, вам нужно преобразовать строку в объект JSON, метод parse, описанный ниже, может это сделать.

itemData = JSON.parse(itemData)

См. Простой пример:

var myJsonStr = '{"id":1,"business_id":401,"name":"\u067e\u06cc\u0631\u0627\u0647\u0646","discount_model":1,"special_date":0,"hot_offer":0,"percent":30,"buy_quantity":null,"prize_quantity":null,"prize_name":null,"floor_buy":null,"discount_percent":null,"is_active":1,"created_at":"2019-07-02 06:43:23","updated_at":"2019-07-02 06:44:51"}';

var myJson = JSON.parse(myJsonStr);

console.log(myJson.name);
1 голос
/ 02 июля 2019

Пожалуйста, попробуйте это

$('#addItem').click(function () {
  let itemData = $('#item').val();
  try {
    itemData = JSON.parse(itemData);
  } catch(e) {
    throw e;
  }

  console.log(itemData.name);
});
0 голосов
/ 02 июля 2019

tldr; безопасный доступ к вложенным объектам в JavaScript очень классным способом.

В большинстве случаев, когда мы работаем с JavaScript, мы будем иметь дело с вложенными объектами, и часто нам потребуется безопасный доступ к внутренним вложенным значениям.

Давайте возьмем этот вложенный объект в качестве примера.

const user = { id: 101, электронная почта: 'jack@dev.com', личная информация: { имя: «Джек», адрес: { строка 1: 'Westwish St', line2: 'washmasher', город: 'wallas', состояние: 'WX' } } }

Чтобы получить доступ к имени нашего пользователя, мы напишем

const name = user.personalInfo.name; const userCity = user.personalInfo.address.city;

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