【问题标题】:Pass object id to session storage将对象 ID 传递给会话存储
【发布时间】:2017-07-25 12:18:31
【问题描述】:

我有一个简单的函数可以将选定的对象 ID 发布到会话存储中,它可以像数字一样工作,但是当我将其更改为单词时它不起作用,知道为什么以及如何解决它吗?

我认为这很好,因为它们都是字符串,你可以在底部看到我的函数解析 json,我不明白为什么它只适用于数字?

代码

$scope.productsandformats = [{
    "name": "name 1",
    "format": [{
        "Fname": "test (ROADSIDE TEMP)",
        "id": "Roadside"
    }, {
        "Fname": "test Sheet",
        "id": "2"
    }, {
        "Fname": "Wrap test (Digital)",
        "id": "3"
    }]
}, {
    "name": "name 2,
    "format": [{
        "Fname": "2 test",
        "id": "4"
    }, {
        "Fname": "test Live (Digital)",
        "id": "5"
    }]
};
$scope.productTypeChange = function() {
    $scope.formats = $scope.productsandformats.find(ps => ps.name === $scope.formData.ProductType.name)
        //NG-Change
    $scope.myFunc = function() {
        var jsonItem = JSON.parse($scope.formData.formatType.id);
        sessionStorage.setItem('format', jsonItem);
    }
}
});

我在检查器中遇到错误

SyntaxError:JSON 中位置 0 的意外标记 R 在 JSON.parse()

【问题讨论】:

  • 检查JSON.parse 的输入是否为有效的 JSON。此外,您的代码示例在name 2 之后缺少"

标签: javascript angularjs parsing object local-storage


【解决方案1】:

您正在解析的 ID 不是 JSON,这就是您收到错误的原因。

事实上,整个作用域对象只是一个 JavaScript 对象,而不是 JSON(它是一种文本格式)。

您获得的 Id 是字符串“Roadside”,但如果它是 JSON 字符串,它看起来类似于“{ \"key\": \"value\" }"。它缺少左大括号的事实告诉解析器它是错误的。

【讨论】:

    【解决方案2】:

    $scope中尝试下面的json

    $scope.productsandformats =[{
        "name": "name 1",
        "format": [{
            "Fname": "test (ROADSIDE TEMP)",
            "id": "Roadside"
        }, {
            "Fname": "test Sheet",
            "id": "2"
        }, {
            "Fname": "Wrap test (Digital)",
            "id": "3"
        }]
    }, {
        "name": "name 2",
        "format": [{
            "Fname": "2 test",
            "id": "4"
        }, {
            "Fname": "test Live (Digital)",
            "id": "5"
        }]
    }]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-07
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 2017-06-08
      相关资源
      最近更新 更多