使用ajax将json对象发送到servlet并接收响应json对象

时间:2016-04-12 11:26:56

标签: javascript ajax servlets

我试图使用ajax将json对象发送到servlet。该对象将被更改并发送回客户端。这是我用来将json对象从客户端发送到服务器的代码。 函数sendJson(jsonObj)

{
    var parsed = JSON.parse(jsonObj);
    $.ajax({
        type: 'get', 
        url: 'GameLogic',
        dataType: 'JSON',
        data: { 
          loadProds: 1,
          parsed: JSON.stringify(parsed)
        },
        success: function(data) {

        },
        error: function(data) {
        alert('fail');
            }
    });
}

我只掌握javascript的基本知识。据我所知,这段代码只是将一个json对象发送给servlet。从servlet接收响应时,我该如何获取它?我搜索了这个,发现类似上面的函数来接收响应。我不明白这个success: function(data)部分的作用。 有人可以解释一下发送json对象并从servlet接收响应的方法。 当我将一个json对象发送到servlet时,除了将对象作为响应发送回去之外,有什么方法我可以知道它是否被servlet接收。

2 个答案:

答案 0 :(得分:1)

简单地说,答案已经在您的代码中了。 jquery的ajax方法必须回调方法才能获得成功和错误。 两者都已经有了。在你的例子中,但什么都不做!!

这里你的代码带有指向回调的注释。

{
    var parsed = JSON.parse(jsonObj);
    $.ajax({
        type: 'get', 
        url: 'GameLogic',
        dataType: 'JSON',
        data: { 
          loadProds: 1,
          parsed: JSON.stringify(parsed)
        },
        success: function(data) {
          // PROCESS your RESPONSE here!!! It is in "data"!!!!
        },
        error: function(data) {
            // This is called when the request failed, what happend is in the "data"!!!
        alert('fail');
            }
    });
}

默认地将Impl。成功回调中的内容,并使用您的浏览器开发工具对其进行调试,以查看"数据"内部的内容。

当您更改问题时,更多地了解如何处理通信以及如何知道您的请求是否已收到。这是我的正常做法。

首先,我为每个请求和响应定义一个envenlope,它始终是相同的。它看起来像这样:

{
  status: OK | ERROR,
  message: "possible error message etc."
  data: JSON Object representing the payload.
}

这样做之后我就可以了。在服务器和客户端之间发送和接收消息的通用逻辑,每一方都知道如何处理信封。为了确保收到消息,可以进行处理等。

然后你有这个:

  1. 对您的服务器进行ajax调用。 2A。如果存在拓扑问题,则调用客户端上的错误回调。请求失败,服务器无法访问! 2B。该消息已由服务器接收。服务器现在可以处理有关用于调用服务器的URL的有效负载。服务器方法成功,它将在信封中写入OK,并将其可能的结果写入" data"有效载荷。如果方法失败,则设置" status"到" ERROR"并提供正确的消息,数据为空。
  2. 客户端接收有关成功回调的数据,它可以解释" status"字段,如果它是有用的回复或是否是错误。
  3. 希望有所帮助

答案 1 :(得分:0)

success:function()部分就像这样

  

请求成功时要调用的函数。函数传递三个参数:

     
      
  1. 从服务器返回的数据,根据 dataType 参数或 dataFilter 回调函数进行格式化(如果已指定)

  2.   
  3. 描述状态的字符串

  4.   
  5. jqXHR(jQuery-XHR)对象

  6.   

这意味着 - 如果您的ajax请求成功,服务器将返回一些响应,即数据。这个"数据"可以在函数中使用。

$.ajax({
    ...
    success: function(data) {
        // process the "data" variable
        console.log("SERVER RESPONSE");
        console.log(data);
    }
});