我有代码:
$(document).ready(function() {
var adress = [];
var locations = ' [';
$('.office p').each(function(el) {
adress[el] = $(this).text();
locations = locations + '{address:\''+adress[el]+'\', data: \'0\', options:{icon: "http://selectner.com/img/bullet.png"}},';
});
locations = locations + ']';
console.log(locations);
$('#tablink').click(function (e) {
$('#map').gmap3({
map:{
options:{
center:[51.4675954,0.048876],
zoom: 2,
scrollwheel: true,
draggable: true,
}
},
marker:{
values : locations,
options:{
draggable: true
},
events:{
}
}
});
});
});
如果我将复制console.log结果并将其粘贴到JSON中(在gmap3函数中 - 位置) - 一切都会起作用,但现在它不起作用。
我认为,我必须使用JSON.parse(),但它会给我写错误:
SyntaxError:JSON.parse:JSON数据第1行第3列的预期属性名称或'}'
我如何解决这个问题?
答案 0 :(得分:1)
不要使用字符串连接操作构建JSON。 不要。 从不,永远。
您可以尝试使用专为此目的而设计的简单JSON serializer
,以便永远不会获得无效的JSON:
var addresses = [];
$('.office p').each(function() {
addresses.push({
address: $(this).text(),
data: 0,
options: {
icon: 'http://selectner.com/img/bullet.png'
}
});
});
var locations = JSON.stringify(addresses);
console.log(locations);
// At this stage it is guaranteed that the addresses variable will
// contain valid JSON string
答案 1 :(得分:0)
那是因为你的“字符串”不是有效的JSON。在此处阅读有关JSON结构的更多信息:http://json.org/
此外,您已经使用JavaScript了,为什么在已经可以使用对象时构建JSON?