【发布时间】:2017-05-20 17:09:29
【问题描述】:
我有一个 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();
});
}
伺服器
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 执行后,我看到在日志文件中打印的值
- 响应只是一个乱码的问号 (?)。我控制台记录了它。我猜它必须与数据类型有关。我尝试了其他几种类型,但无法弄清楚。如有任何帮助,我们将不胜感激。
【问题讨论】:
-
你的问题不是很清楚。首先,您似乎没有将
responseValue添加到servlet 中的response,而且您似乎也没有在JS 中检索和使用responseValue -
对不起,我试图从帖子中删除不必要的代码。显然,我在这方面做得不好。基本上,Servelt 与第 3 方 api 交互,无论它从第 3 部分得到什么响应,它都会传递给 AJAX。我回答我从第 3 方得到的很好,我可以记录它但无法将它传递给 AJAX
-
是的,我试过
response.getWriter().write("test");,而不是ajax回调函数获取值而不是乱码。