将响应从servlet发送到ajax调用作为对象

时间:2013-04-22 22:09:55

标签: jquery jsp java-ee servlets

我正在通过以下方式将servlet传递给jQuery。

jQuery的:

$('.snd').click(function (){
    $.ajax({
        url: '/ProjectName/ServletName?action=test',
        data: {cl1: $('.t11').val()},
        success: function (response){
            $('.t12').val(response);
        }
    }); 
});

的Servlet

if (action.compareTo("test") == 0) {
            action = "abc";

            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();

            try {

                out.println("text1");
            } finally {
                out.close();
            }
        }

通过这样做我得到结果“text1”

现在我需要做什么,而不是发送普通文本,我想将一个对象或一个String数组作为响应发送到jQuery?

e.g

在servlet中我有以下数组

String[] ss= {"n1","n2"};

在jQuery中我想使用

$('.t12').val(response[0]);

获得结果“n1”

1 个答案:

答案 0 :(得分:3)

您不能直接在服务器和浏览器之间发送对象,但您可以做的是将它们序列化为JSON文本格式(这就是JSON的发明)。服务器端JSON.serialize()(或其他语言的等价物)和客户端JSON.parse()

如果您在jQuery ajax调用中将数据类型指定为JSON,它将自动为您解析它,因此您甚至不必调用JSON.parse()