【问题标题】:Send response from servlet to ajax call as object [duplicate]将响应从servlet发送到ajax调用作为对象[重复]
【发布时间】:2013-04-15 23:22:58
【问题描述】:

我正在通过以下方式与 jQuery 通信 servlet。

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”

现在,如果我不想发送普通文本,而是想向 jQuery 发送对象或字符串数​​组作为响应,我需要做什么?

例如

在 servlet 中我有以下数组

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

我想在 jQuery 中使用

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

得到结果“n1”

【问题讨论】:

  • HTTP 只发送和接收字符串。由您决定如何解释这些字符串,例如 JSON 或其他形式的类型转换。

标签: jquery jsp jakarta-ee servlets


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    相关资源
    最近更新 更多