【问题标题】:JSON HttpServletRequest/HttpServletResponseJSON HttpServletRequest/HttpServletResponse
【发布时间】:2016-08-11 21:11:58
【问题描述】:

我是 Java 世界的新手,在弄清楚如何将凭证 JSON 字符串(见下文)存储在变量中然后将其转换为 JSON 对象时遇到了一些麻烦,该对象随后可以显示在 #welcometext 中分区。

我已经查看了很多回复,但没有任何效果。如果有人能给我一些帮助,我将不胜感激!

ActionServlet.java doPost:

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//    String body = request.getReader().lines().reduce("", (acc, actual) -> acc + actual);
    String body = request.getParameter("data");
    System.out.println("Body is: " + body);

    JsonReader jsonReader = Json.createReader(new StringReader(body));
    JsonObject obj = jsonReader.readObject();
    System.out.println("obj is: " + obj);
    jsonReader.close();

    response.setContentType("application/json");
    response.setCharacterEncoding("UTF-8");

  }
}

index.html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Ajax Demo</title>
<script src="http://code.jquery.com/jquery-latest.js">   
</script>
<script>
  $(document).ready(function() {

    var form2object = function(form) {
      var data = {};
      $('form').find('input').each(function(index, element) {
        var type = $(this).attr('type');
        if ($(this).attr('name') && type !== 'submit' && type !== 'hidden') {
          data[$(this).attr('name')] = $(this).val();
        }
      });

      return data;
    };

    var wrap = function wrap(root, formData) {
      var wrapper = {};
      wrapper[root] = formData;
      return wrapper;
    };

    var callback = function callback(error, data) {
      if (error) {
        console.error(error);
        $('#welcometext').val('status: ' + error.status + ', error: ' + error.error);
        return;
      }

      $('#welcometext').val(JSON.stringify(data, null, 4));
    };


    $('#submit').on('click', function(e) {
      e.preventDefault();
      console.log(form2object(this));
      var credentials = wrap('credentials', form2object(this));
      console.log("credentials is: " + credentials);

      $.ajax({
        method: 'POST',
        url: 'JQueryAjaxDemo/ActionServlet',
        contentType: 'application/json',
        data: JSON.stringify(credentials, null, 4),
        dataType: 'json'
      }, callback);

    }); //end of on click function
  }); //end of doc ready
</script>
</head>
<body>
  <form id="form1">
    <h1>AJAX Demo using Jquery and Servlets</h1>

    Enter your Info:
    <br>
     <input name ="name" type="text" id="user" placeholder="name" />
     <br>
     <input name="age" type="text" id="age" placeholder="age"/>
     <br>
     <input type="button" id="submit" value="Ajax Submit"/>
    <div id="welcometext">
    </div>
  </form>
</body>
</html>

【问题讨论】:

    标签: javascript java json ajax


    【解决方案1】:

    您调用request.getParameter("data") 获取URL 中查询字符串的值。但是,您的 javascript 似乎根本没有使用查询字符串向服务器发送请求。在我看来,javascript 发送的 POST 请求的正文为 {"credentials": {...}}。使用request.getInputStream() 读取请求正文。

    【讨论】:

      猜你喜欢
      • 2017-08-04
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多