AJAX没有收到来自servlet的响应

时间:2017-01-06 00:45:46

标签: java jquery ajax servlets

我有一个AJAX对servlet进行POST。 Servlet进行一些计算并返回响应。 AJAX成功函数读取响应并执行某些操作。

AJAX CALL

$.ajax( {
     type: "POST",
     url: "/bin/path/to/Servlet",
     data: $(this).serialize(),
     dataType: "html",
     success: function(responseValue) {
         if(responseValue == '200') {
              // Do something
          }else {
              console.log("it is not 200");
          }
     },
     error: trialForm.trialError
     }).done(function(status) {
             $(trialForm.submitButton).show();
             $(trialForm.loader).hide();
     });
}

SERVLET

protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) {
     response.setContentType("text/html");    

     URL url = new URL("www.apriurl.com");
     HttpURLConnection conn = (HttpURLConnection) url.openConnection();
     conn.setDoOutput(true);
     conn.setRequestMethod("POST");
     conn.setRequestProperty("Content-Type","application/json");
     conn.setRequestProperty("Authorization","XXXXZZZZ " + strSig);
     conn.setRequestProperty("Accept","application/json");
     conn.setRequestProperty("ZZZZZ",clientID);

     OutputStream os = conn.getOutputStream();
     os.write(inputParameters.getBytes());
     os.flush(); 

     System.out.println(conn.getResponseCode());
     response.getWriter().write(conn.getResponseCode());
}
  • responseValue是一个在java类中使用的变量。
  • 它具有正确的价值。我看到sys out执行后在日志文件中打印的值
  • 响应只是一个乱码问号(?)。我控制台记录了它。我猜它必须对数据类型做些什么。我尝试了其他一些类型,但无法弄明白。任何帮助都是适用的。

1 个答案:

答案 0 :(得分:1)

这是write (int)而不是write (String) 所以,如果你write(200),它发送ascii值为200

尝试将200作为字符串

发送

作为

response.getWriter().write(String.valueOf (conn.getResponseCode()));

请参阅https://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#write(int)

  

public void write(int c)

     

写一个字符。