我正在构建一个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来处理请求。
一旦接收到来自客户端的数据,并且已经应用​​了一些业务逻辑,我想发送回一个简单的String。

然后,上述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函数可以处理从服务器接收的数据。

类“ 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”的警报消息外,输出还包括发送了ajax调用的JSP-Page的整个html代码!

最佳答案

没有任何内容专门发送到“屏幕”,这与请求的起源有关。
如果单击链接,浏览器将启动请求,浏览器将收到response并处理输出以显示。

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

您可能需要确保将HttpServletResponse对象的响应内容类型设置为“ text / html”,但是由于您打算使用ajax,因此不妨考虑使用JSON的步骤也一样

09-11 19:30
查看更多