【发布时间】:2018-11-15 16:45:08
【问题描述】:
我正在尝试在表格内显示的下拉列表中显示 json 值。 我的 JSON 值可以如下所示:
var ids1 = [{"pid":"23221","des":"2321"},{"pid":"1301","des":"1301"},{"pid":"1003","des":"1003"}]
var ids = [{"pid":"laptop","des":"laptop"},{"pid":"IPAD mini.","des":"IPAD mini."}]
可以是ids1中显示的数字,也可以是ids中显示的字符串值,也可以是组合。
当我使用下面的代码时,下拉列表中的值显示在引号中。
$("<option />").text(JSON.stringify(value.des)).val(JSON.stringify(value.pid)).appendTo(productDropdown);
当使用下面的代码在下拉列表中显示值时,ids1 中显示的整数值不会显示引号,但是当尝试传递 id 并在列表中显示时,它会引发异常。
$("<option />").text(JSON.parse(value.des)).val(JSON.parse(value.pid)).appendTo(productDropdown);
尝试在循环中传递 ids 时出现异常。
Uncaught SyntaxError: Unexpected token l in JSON at position 0
演示链接:http://plnkr.co/edit/ilvGQPiy3nEKBuH8q46b?p=preview
js代码:
function populateSelect(ids) {
var ids1 = [{"pid":"23221","des":"2321"},{"pid":"1301","des":"1301"},{"pid":"1003","des":"1003"}]
var ids = [{"pid":"laptop","des":"laptop"},{"pid":"IPAD mini.","des":"IPAD mini."}]
var productDropdown = $(".product");
$.each(ids, function(index,value) {
$("<option />").text(JSON.parse(value.des)).val(JSON.parse(value.pid)).appendTo(productDropdown);
// $("<option />").text(JSON.stringify(value.des)).val(JSON.stringify(value.pid)).appendTo(productDropdown);
});
}
$(document).ready(function(){
populateSelect();
});
【问题讨论】:
-
你为什么打电话给
JSON.parse()? -
您的代码中有 ZERO JSON。和往常一样,请勿致电
stringify()(或parse()),除非您了解它的作用。id1是一个 JavaScript 对象,你应该使用.text(value.des) -
.text(JSON.parse(value.des))没有意义 -
应该指出的是,谷歌搜索错误消息对我来说是第一个结果:stackoverflow.com/questions/14432165/…
标签: javascript jquery html javascript-objects