我有一个javascript变量,看起来像:
data = [{
y: 55.11,
color: colors[0],
drilldown: {
name: 'MSIE versions',
categories: ['MSIE 6.0', 'MSIE 7.0', 'MSIE 8.0', 'MSIE 9.0'],
data: [10.85, 7.35, 33.06, 2.81],
color: colors[0]
}
}, {
y: 21.63,
color: colors[1],
drilldown: {
name: 'Firefox versions',
categories: ['Firefox 2.0', 'Firefox 3.0', 'Firefox 3.5', 'Firefox 3.6', 'Firefox 4.0'],
data: [0.20, 0.83, 1.58, 13.12, 5.43],
color: colors[1]
}
}, {
y: 11.94,
color: colors[2],
drilldown: {
name: 'Chrome versions',
categories: ['Chrome 5.0', 'Chrome 6.0', 'Chrome 7.0', 'Chrome 8.0', 'Chrome 9.0',
'Chrome 10.0', 'Chrome 11.0', 'Chrome 12.0'],
data: [0.12, 0.19, 0.12, 0.36, 0.32, 9.91, 0.50, 0.22],
color: colors[2]
}
}, {
y: 7.15,
color: colors[3],
drilldown: {
name: 'Safari versions',
categories: ['Safari 5.0', 'Safari 4.0', 'Safari Win 5.0', 'Safari 4.1', 'Safari/Maxthon',
'Safari 3.1', 'Safari 4.1'],
data: [4.55, 1.42, 0.23, 0.21, 0.20, 0.19, 0.14],
color: colors[3]
}
}, {
y: 2.14,
color: colors[4],
drilldown: {
name: 'Opera versions',
categories: ['Opera 9.x', 'Opera 10.x', 'Opera 11.x'],
data: [ 0.12, 0.37, 1.65],
color: colors[4]
}
}];
当我从servlet传递此值作为正常响应类型(response.setContentType("text/html;charset=UTF-8");)
时,我希望根据数据库中的数据从servlet创建此变量我无法处理它。即使你看到这个变量它不是一个有效的json对象,所以我不能使用JSON.parse。
请指导我如何通过ajax调用获取此变量将调用ajax中的dataType以及servlet中的响应内容类型。 或者如果还有其他方法可以帮助。 感谢
答案 0 :(得分:3)
在servlet端,将文本写入text / plain响应:
response.getOutputStream().write(myKindaJsonString.getBytes());
使用jquery的ajax来获取它:
$.ajax({
url: CONTEXT_PATH + '/YourServlet',
processData: false,
type: "GET",
success: function(response) {
// your string is response now
},
error: function(response) {
alert("There was an error while trying to get value.");
}
});
答案 1 :(得分:1)
由于您的数据引用了其他对象(colors
),从而使JSON不兼容,为什么不使用eval
?
var colors = [1,2,3,4,5,6,7,8];
var data;
eval("data = [{...}]");
...
答案 2 :(得分:0)
在服务器端,您可以使用属性创建bean类(或称为DTO对象),并为其设置值,并在发送回来时将更改为返回类型作为JSON。它将解析为json字符串并发送它回到客户端,你可以使用parseJSON从json字符串更改为json对象。