如何区分javascript中的servlet响应?

时间:2015-04-02 23:26:47

标签: java javascript ajax servlets

在我的网站中,我使用ajax将信息发布到java servlet并使用以下javascript代码读取响应:

            $.ajax({
            url : 'myfirstservlet',
            async: false,
            data : {
                       //send info..
                   },

            success : function(responseText) {

                //receive response..
            }
        });

在我的servlet中,我将返回多个响应。例如:

    String response1 = "response1";
    int response2 = "5";
    out.println(response1);
    out.println(response2);

那么如何获取这两个不同响应的值并将它们放在单独的javascript变量中?

e.g。

$var response1 = ['response1'];
$var response2 = ['response2'];

谢谢:)

3 个答案:

答案 0 :(得分:2)

如果out是响应者,那么您的输出将是

response1
5

一种更好的方法是创建一个JSON对象而不是纯文本。

{
    "res1":"response1",
    "res2":"5"
}

答案 1 :(得分:0)

您想要的是在单个响应中使用两个不同的数据进行响应。根据HTTP,您不能有两个响应。

您可以使用Json或正确删除数据来执行此操作。

  • 如果此响应是简单的字符串,则转到delimation方法 不要使用','如果字符串甚至远程可能包含逗号,则为delimater。带多个carractor的Delimator会做。 '##Delem'
  • 如果数据很复杂,那就是带有aggrigation和constitutuin的对象结构,那么请选择JSON。

答案 2 :(得分:0)

我认为我们过于复杂了。

HTTP中没有对请求的多个响应。客户端发出请求,服务器发回响应。您显示的代码不会发送多个响应。它发送一个响应,其中只包含2个有趣的数据。

由于您使用的是println,因此您的输出按行定义是按行分隔的。因此,在客户端代码中,将响应拆分为CRLF。

var parts = response.split(/\r?\n/);
var part1 = parts[0];
var part2 = parts[1];

如果您要传输的数据非常简单且不太可能增长,那么这很好。如果您想要一个更具伸缩性的解决方案,我推荐使用JSON。