关于jquery:将servlet的响应作为对象发送到ajax调用

Send response from servlet to ajax call as object

本问题已经有最佳答案,请猛点这里访问。

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

jQuery的:

1
2
3
4
5
6
7
8
9
$('.snd').click(function (){
    $.ajax({
        url: '/ProjectName/ServletName?action=test',
        data: {cl1: $('.t11').val()},
        success: function (response){
            $('.t12').val(response);
        }
    });
});

Servlet的

1
2
3
4
5
6
7
8
9
10
11
12
13
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?

例如

在servlet中我有以下数组

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

在jQuery中我想使用

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

得到结果"n1"


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

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