【问题标题】:unable to send "JSON.stringify" data to servlet [duplicate]无法将“JSON.stringify”数据发送到 servlet [重复]
【发布时间】:2017-04-29 11:17:59
【问题描述】:

我无法将JSON 格式的数据从我的jsp 发送到servlet 控制器。我想,我对 servlet 的 ajax 调用有问题。以下是我的代码:

JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script src="js/jquery.min.js" type="text/javascript"></script>
<script>
var SendInfo=[];
$(document).ready(function(){
    $("#but").click(function(){
        $(".tabclass tr td input[type='checkbox']:checked").each(function(){
            var sibs=$(this).parent().siblings("td");

            var v0= $(this).val();

            var v1=$(sibs[0]).text(); 

            var v2=$(sibs[1]).children("select[name='address']").val();

            var domain = {
                    id:v0,
                    name: v1,
                    address: v2

            }
            SendInfo.push(domain);

            alert(v0+" & "+v1+" & "+v2);

        }); 
        $.ajax({
              type: "POST",
              url: "s1.do",
              data: JSON.stringify({ students: SendInfo }), // might be wrong here or is it correct way to send data?
              success: function(data, status){
                  alert("Data: " + data + "\nStatus: " + status);
              },
              error: function(XMLHttpRequest, textStatus, errorThrown) {
                 alert("some error");
              }
            });
    });
});
</script>
</head>
<body>
<table border="1" class="tabclass">
<th>select</th><th>Name</th><th>Address</th>
<tr>
<td><input type="checkbox" name="selectCheck" class="select" id="ch1" value="1"/> </td>
<td><span class="name">Nitin</span></td>
<td><select name="address">
<option>Gurgaon</option>
<option>Noida</option>
<option>Rohini</option>
</select></td>
</tr>
<tr>
<td><input type="checkbox" name="selectCheck" class="select" id="ch2" value="2"/> </td>
<td><span class="name">Abc</span></td>
<td><select name="address">
<option>Gurgaon</option>
<option>Noida</option>
<option>Rohini</option>
</select></td>
</tr>
<tr>
<td><input type="checkbox" name="selectCheck" class="select" id="ch3" value="3"/> </td>
<td><span class="name">Xyz</span></td>
<td><select name="address">
<option>Gurgaon</option>
<option>Noida</option>
<option>Rohini</option>
</select></td>
</tr>
</table><br><br>
<button id="but">Test</button>
<br></br><button id="but2">Test2</button>
</body>
</html>

Servlet

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        String abc = request.getParameter("students");
        System.out.println("JSON >  "+abc);
    }

我在控制台中得到的输出为:

JSON > null

【问题讨论】:

    标签: java json ajax jsp servlets


    【解决方案1】:

    我只需要将ajax 调用的data 元素更改为:

    data: {students : JSON.stringify(SendInfo)},
    

    【讨论】:

      【解决方案2】:

      request.getParameter() 从 URL(查询参数)或表单发布参数(application/x-www-form-urlencoded,multipart/form-data 内容类型)读取数据。

      如果您发布 JSON,您必须从 servlet inputStream (request.getInputStream) 中读取它,然后解析字符串。

      【讨论】:

      • 如果我使用 $.post ajax 方式,我可以从 request.getParameter() 方法接收数据。我想问一下,为什么$.ajax 不可能有这种行为
      猜你喜欢
      • 1970-01-01
      • 2020-10-18
      • 2014-03-20
      • 2014-09-25
      • 2020-07-22
      • 2019-07-17
      • 2021-07-15
      • 2019-01-07
      • 2021-07-09
      相关资源
      最近更新 更多