我在Angular中收到了以下ajax请愿书:
$scope.texto = "";
$scope.cargarDesdeBackend = function(){
var nombre = "{'nombre':'Benito'}";
$http({
method: 'POST',
url: 'http://localhost:8080/Datos',
headers: {'Content-Type': 'application/json'},
data: nombre
}).success(function (data)
{
$scope.texto = data;
});
};
请注意,“var nombre”行仅用于测试目的!
我从一个按钮发送此请愿书,然后转到以下servlet:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
StringBuffer sb = new StringBuffer();
try
{
BufferedReader reader = request.getReader();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line);
}
} catch (Exception e) { e.printStackTrace(); }
JSONParser parser = new JSONParser();
JSONObject joUser = null;
try
{
joUser = (JSONObject) parser.parse(sb.toString());
} catch (ParseException e) { e.printStackTrace(); }
String user = (String) joUser.get("nombre");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.write("A new user " + user + " has been created.");
out.flush();
out.close();
}
这将检索以下内容:
在控制台中,我收到此错误:
我做错了什么?
编辑:我已将此servlet映射到web.xml文件中的“/ Datos”。
答案 0 :(得分:2)
您发送的内容不是有效的JSON。使用
var nombre = {nombre: 'Benito'};
让角度将此对象编组为JSON。
同样删除无用的标题,因为Angular也会自行添加它。
请注意,不是逐行将字体读入字符串然后解析字符串,而应将读者直接传递给JSON解析器。
最后,对于您和我们来说,通过读取异常的堆栈跟踪找出问题会更容易,而不是试图猜测这个500错误的原因是什么。