我有一个简单的功能,可以将选定的对象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:位于0的JSON中的意外标记R. 在JSON.parse()
答案 0 :(得分:0)
在$scope
$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"
}]
}]
答案 1 :(得分:0)
您正在解析的ID不是JSON,这就是您收到错误的原因。
事实上,整个范围对象只是一个JavaScript对象,而不是JSON(它是一种文本格式)。
你得到的ID是字符串“Roadside”,但是如果它是一个JSON字符串,它看起来像“{\”key \“:\”value \“}”。它缺少开括号的事实告诉解析器它是错的。