如何从servlet传递javascript对象

时间:2012-06-14 05:39:39

标签: javascript jquery ajax servlets

我有一个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中的响应内容类型。 或者如果还有其他方法可以帮助。 感谢

3 个答案:

答案 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对象。