繁体   English   中英

AJAX 未收到来自 servlet 的响应

[英]AJAX not receiving response from servlet

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

AJAX 调用

$.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 执行后,我看到在日志文件中打印的值
  • 响应只是一个乱码的问号 (?)。 我控制台记录了它。 我猜它必须对数据类型做些什么。 我尝试了其他几种类型,但无法弄清楚。 任何帮助表示赞赏。

这是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)

公共无效写(int c)

写入单个字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM