我无法在js中访问对象的内部数据

时间:2019-07-02 03:36:39

标签: javascript json object

在我的网上商店中,我想按项目将客户订单添加到订单中。 首先,我单击并从数据库添加一个项目。 然后我将选择的项目传递给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 个答案:

答案 0 :(得分:3)

根本无法从字符串调用属性,必须将String转换为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 :(得分:1)

请尝试这个

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

  console.log(itemData.name);
});

答案 2 :(得分:-3)

tldr;以一种非常酷的方式安全地访问JavaScript中的嵌套对象。

在大多数情况下,使用JavaScript时,我们将处理嵌套对象,并且经常需要安全地访问最内层的嵌套值。

让我们以这个嵌套对象为例。

const user = {     id:101,     电子邮件:“ jack@dev.com”,     个人信息: {         名称:“杰克”,         地址: {             第1行:“ westwish st”,             第2行:“ washmasher”,             城市:“ wallas”,             状态:“ WX”         }     } }

要访问我们的用户名,我们将写

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