【问题标题】:JSON stringify not saving the data i want in localStorageJSON stringify 没有将我想要的数据保存在 localStorage
【发布时间】:2018-06-19 12:09:38
【问题描述】:

我正在尝试在本地存储中保存一个具有一个数组和一个 int 的对象。

var test = potenciaFacturaService.getPotencia(JSON.parse(getVariable("facturas")),null,getVariable("tipo_contrato"));
    console.log(test);
    var new_facturas = {
        info: test,
        error:0
    };
    console.log(new_facturas);
    setVariable("new_facturas", JSON.stringify(new_facturas));

我的test 变量在我的服务中调用该方法时获取一个数组,我尝试使用方法setVariable 保存对象,该方法只调用我想要保存在我的localStorage 中的数据。 打印new_facturas 的值时,这是输出

{info: Array(0), error: 0}
 error:0
info:Array(15)
0:{id: "776142", kwh: 0}
1:{id: "1269777", kwh: 7045}
2:{id: "887831", kwh: 0}
3:{id: "562951", kwh: 0}
4:{id: "390243", kwh: 1995}
5:{id: "669372", kwh: 0}
6:{id: "1019550", kwh: 0}
7:{id: "469265", kwh: 0}
8:{id: "1145145", kwh: 0}
9:{id: "253231", kwh: 0}
10:{id: "150663", kwh: 9191}
11:{id: "318047", kwh: 0}
12:{id: "119228", kwh: 0}
13:{id: "93050", kwh: 399.999}
14:{id: "201014", kwh: 23}

但是在检查 localStorage 时我有这个。

{info: [], error: 0}
error:0
info:[]

空数组,有人可以帮我解决这个问题吗?

编辑。添加getPotencia

this.getPotencia= function(facturas, id,tipocontrato){
  console.log(facturas);
  console.log(id);
  console.log(tipocontrato);
  var potencias = [];
  var flag;

  filtrar();
  function filtrar(){
    Object.entries(facturas).forEach(([key,val])=>{
          if (key=="info"){
            Object.entries(val).forEach(([key,valor])=>{
            //console.log(valor.id);
            $http({
              url:'http://api',
              method:"POST",
              data:{id_factura:valor.id, tipo_contrato:tipocontrato},
              headers:{
                "Content-Type":"application/json; charset=utf-8"
              }
            })
            .then(function(response){
              //console.log(response.data);
              if (response.data.error==0){
                //console.log(response.data.factura.length);
                var suma=0;
                var id;
                if (response.data.factura.length>1){
                  for (var i=0;i<response.data.factura.length;i++){
                  //  console.log(response.data.factura[i].kwh);
                    suma = suma + parseFloat(response.data.factura[i].kwh);
                    id = response.data.factura[1].factura_id;
                  }
                  if (id==valor.id){
                    console.log(valor.kwh=suma);
                    console.log(valor);
                    potencias.push({
                      id: valor.id,
                      kwh:suma
                    });
                  }
                }
                if (response.data.factura.length==1){
                  if (response.data.factura[0].factura_id==valor.id){
                    valor.kwh = response.data.factura[0].kwh;
                    potencias.push({
                      id: valor.id,
                      kwh:parseFloat(response.data.factura[0].kwh)
                    });
                  }
                }

              }

            })
            })
            console.log(val);
            console.log(potencias);
            agregar(potencias);
          }
      })
  }

    function agregar(facturas){
      console.log("agregando");
      console.log(typeof facturas);
      for (var i=0; i<facturas.length;i++){
        console.log(facturas[i]);
      }

    }
    return potencias;
}

【问题讨论】:

  • // 存储 localStorage.setItem("lastname", "Smith"); // 获取 document.getElementById("result").innerHTML = localStorage.getItem("lastname");
  • 我在 localStorage 上保存了更多数据,这是我唯一无法保存的数据
  • info: Array(0) ... 和 info:Array(15) ... 所以,可能异步发生了一些事情
  • 添加了代码@Satpal
  • 数组需要初始化并随后使用括号“[]”更新您的 JSON 文件的结构似乎不正确。

标签: javascript angularjs json


【解决方案1】:

我认为问题出在异步内容上,当尝试在 foreach 循环上调用 $http 时,我做了几乎相同的操作,但在服务器端。在 foreach 循环中进行查询并返回该信息。

【讨论】:

    猜你喜欢
    • 2017-02-13
    • 1970-01-01
    • 2022-01-12
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多