【问题标题】:Read value from DOM json从 DOM json 读取值
【发布时间】:2020-12-06 12:39:43
【问题描述】:

当我做 Ctrl+U 时,我的页面 DOM 中有下面的 json

<script type="text/x-magento-init">
{
  "#country": {
    "regionUpdater": {
      "optionalRegionAllowed": true,
      "regionListId": "#region_id",
      "regionInputId": "#region",
      "postcodeId": "#zip",
      "form": "#form-validate",
      "regionJson": {
        "config": {
          "show_all_regions": true,
          "regions_required": [
            "AU",
            "BR",
            "CA",
            "CN",
            "CO",
            "HR",
            "EE",
            "IN",
            "LV",
            "LT",
            "MX",
            "PL",
            "RO",
            "ES",
            "CH",
            "US"
          ]
        }
      }
    }
  }
}
</script>

我想在我的自定义 js 文件中获取 regionJson 值,有人可以给我任何解决方案或任何想法来实现这一点。

【问题讨论】:

    标签: jquery json magento2


    【解决方案1】:

    电池解决方案是找到 phtml 文件,该文件调用可能正在调用提供 regionJson 数据的块或函数,您可以通过使用 text/x-magento-init 调用它来在 js 文件中获取相同的数据并传递配置与您的问题中传递的相同,您也可以将其存储在 javascript 全局 window 对象中,稍后在 js 文件中获取此值。

    【讨论】:

      【解决方案2】:

      可以这样获取regionJson,

      json = {
        "country": {
          "regionUpdater": {
            "optionalRegionAllowed": true,
            "regionListId": "#region_id",
            "regionInputId": "#region",
            "postcodeId": "#zip",
            "form": "#form-validate",
            "regionJson": {
              "config": {
                "show_all_regions": true,
                "regions_required": [
                  "AU",
                  "BR",
                  "CA",
                  "CN",
                  "CO",
                  "HR",
                  "EE",
                  "IN",
                  "LV",
                  "LT",
                  "MX",
                  "PL",
                  "RO",
                  "ES",
                  "CH",
                  "US"
                ]
              }
            }
          }
        }
      }
      
      console.log(json["#country"]["regionUpdater"]["regionJson"])
      

      【讨论】:

      • 但我无法更改 json 格式,就像我无法从 json 密钥中删除 #country 一样
      • 你可以得到这样的console.log(json["#country"]["regionUpdater"]["regionJson"])。我更新了我的答案。
      【解决方案3】:

      尝试这样的事情,理想情况下 # 在 json 键名中无效。

      所以我用replace方法删除它,然后解析它

       var getTxt=$('#script').html().replace('#country','country');
       var jsonData= JSON.parse(getTxt);
        
       console.log(jsonData.country.regionUpdater.regionJson);
      

      Working Demo

      【讨论】:

        猜你喜欢
        • 2016-10-12
        • 1970-01-01
        • 2018-12-02
        • 2013-03-06
        • 2019-03-11
        • 2017-03-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多