Отправка 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
}

Я надеюсь, что это понятно. Если нет, спросите меня в комментариях.

Другие вопросы по тегам