【问题标题】:Sending a json object using ajax to a servlet and receiving a response json object使用 ajax 将 json 对象发送到 servlet 并接收响应 json 对象
【发布时间】:2016-04-12 11:26:55
【问题描述】:

我正在尝试使用 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 是否接收到它。

【问题讨论】:

  • 这是否回答了您关于 Servlets+Ajax 的所有问题? stackoverflow.com/q/4112686 鉴于您目前使用 $.ajax 的方式,您似乎缺乏一些基本的了解。

标签: javascript ajax servlets


【解决方案1】:

很简单,答案已经在您的代码中。 jquery的ajax方法必须回调方法成功和错误。 两者都已经实现。在你的例子中,但什么都不做!!

这里是您的代码,其中 cmets 指向回调 impl。

{
    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');
            }
    });
}

实施。成功回调中的某些内容并使用浏览器开发工具对其进行调试以查看“数据”内部的内容。

由于您更改了更多关于如何处理一般通信以及如何知道您的请求是否已收到的问题。这是我的正常做法。

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

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

完成此操作后,我可以实现。在服务器和客户端之间发送和接收消息的通用逻辑,并且每一方现在都知道如何处理信封。确保收到消息,可以处理等。

那么你有这个:

  1. 对您的服务器进行 ajax 调用。 2a。如果存在拓扑问题,则会调用客户端的错误回调。请求失败,服务器无法访问! 2b。服务器收到消息。服务器现在可以处理有关用于调用服务器的 URL 的有效负载。服务器方法成功了,它将在信封中写入一个 OK,并将其可能的结果以“数据”作为有效负载。如果该方法失败,它将“状态”设置为“错误”并提供适当的消息,数据为空。
  2. 客户端在成功回调中接收数据,如果它是有用的响应或错误,它可以解释“状态”字段。

希望有帮助

【讨论】:

    【解决方案2】:

    success:function() 部分是这样的

    请求成功时调用的函数。函数获得 三个 参数:

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

    2. 描述状态的字符串

    3. jqXHR (jQuery-XHR) 对象

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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      相关资源
      最近更新 更多