Отправка Json из сервлета в Javascript
Я пытаюсь отправить массив объектов json из сервлета в javascript . Где я все получаю массив и анализ. Мой AJAX вызывает сервлет соответствующим образом, но не может получить массив JSON в конце JavaScript, пожалуйста, помогите
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
System.out.println("Post!!");
response.setContentType("application/json");//since sendign jsonArray toString
PrintWriter out = response.getWriter();
try {
Marker marker=new Marker( 40.72318,-74.03605);//
JSONArray arrayObj=new JSONArray();
arrayObj.add(marker);
System.out.println(marker.toString());
out.print(arrayObj);
} finally {
out.flush();
out.close();
}
}
Это мой ajax-вызов в javascript, где я пытаюсь получить массив объектов json из сервлета.
$.ajax({
url:'test',
dataType:'json',
type:'POST',
success:function(data){
<%System.out.println(" success");%>
console.log(data);
alert('got json hopefully');
alert(data);
//
},
error:function(jxhr){
<%System.out.println(" faliure");%>
console.log(jxhr.responseText);
}
});
1 ответ
Это сработало для меня, ниже - код ajax.
$.ajax({
type : 'POST',
url : "URL",
data: {array: array},
success : function(response)
{
alert("Success "+response.message);
},
error : function(response)
{
alert("Error"+response.message);
console.log('Error');
}
});
Сервлет:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String[] array = request.getParameterValues("array[]");
request.setCharacterEncoding("utf8");
response.setContentType("application/json");
ArrayList<String> message = new ArrayList<String>();
message.add("response message goes here");
PrintWriter writer = response.getWriter();
JSONObject obj = new JSONObject();
obj.put("message",message);
response.setStatus(200);
//System.out.println(obj.get("message"));
writer.append(obj.toString());
writer.close();
}
Подробнее см. Здесь
Так я делаю запросы к сервлету и отвечаю обратно с помощью json. Я использую библиотеку Google GSON для Java, и я советую вам использовать ее тоже. https://code.google.com/p/google-gson/
$.ajax({
url: 'servletName', //the mapping of your servlet
type: 'POST',
dataType: 'json',
data: $('#someForm').serialize(),
success: function(data) {
if(data.isValid){
//maybe draw some html
}else{
//data is not valid so give the user some kind of alert text
}
}
Это сервлет
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String someInput = request.getParameter("someInput");
Map map=new HashMap();
if(someInput!=null){ //or whatever conditions you need
map.put("isValid",true);
map.put("someInput",someInput);
}else{
map.put("isValid", false);
}
write(response,map);
}
private void write(HttpServletResponse response, Map<String, Object> map) throws IOException {
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(new Gson().toJson(map)); //this is how simple GSON works
}
Я надеюсь, что это понятно. Если нет, спросите меня в комментариях.