HttpServletResponse 应发送数据而不将它们打印到客户端屏幕

HttpServletResponse shall send data without printing them to client screen

我正在构建 Web 应用程序。

此 Web 应用程序的一部分是从客户端到服务器的 ajax 请求:

$.ajax({
      url: url,
      type: "get", 
      data: { 
        id: ID, 
      },
      success: function(response) {
        //parameter response contains the data sent back from the server
        //some stuff is done to this data in the rest of this function     
      },
      error: function() {
        alert("An error occurred.");
      }
  });

在服务器端,我使用 servlet 来处理请求。 一旦收到来自客户端的数据,并且应用了一些业务逻辑,我想发回一个简单的字符串。

然后,数据字符串将由上面 ajax 函数的以下部分处理:

 success: function(response) {
     //parameter response contains the data sent back from the server
     //some stuff is done to this data in the rest of this function     
 },

我的问题是:

我知道如何将数据发送到客户端的屏幕:

 PrintWriter out = response.getWriter();
 out.println(data);

但是,我不知道如何将数据(不是发送到屏幕,而是)发送到 ajax-函数,以便此 ajax-函数可以处理数据从服务器收到。

class"HttpServletResponse"的java对象"response"只提供了"sendError()"等方法。

我想发送数据而不将它们打印到屏幕上。

我该怎么做?

************************更新****************** *************************

我尝试使用 PrintWriter 将字符串发送回 ajax 函数:

PrintWriter out = response.getWriter();
out.println("test");

...然后我想在警报消息中输出文本 "test":

$.ajax({
      url: url,
      type: "get", 
      data: { 
        latitude: location.lat(), 
        longitude: location.lng(), 
        radius: 10
      },
      success: function(response) {
        alert(response);
      },
      error: function() {
        alert("Ein Fehler beim Abfragen der Daten ist aufgetreten.");
      }
  });

但不是输出内容为 "test" 的警报消息,而是输出包含 JSP-页面的整个 html 代码,ajax -呼叫已发送!

没有任何内容会具体发送到 "screen",所有内容都与请求的来源有关。
如果点击一个link,浏览器发起请求,浏览器收到response并处理输出显示

在这种情况下,request 将源自您的 ajax 调用,因此 ajax 调用将处理请求并且内容将在 .requestText 属性 的响应。

您可能需要确保 HttpServletResponse 对象的响应内容类型设置为 "text/html",但由于您要使用 ajax ,您不妨也考虑使用 JSON。