我正在尝试将JSON
中设置的servlet
响应转移到JSP
页面。
JSP页面
<script>
$(document).ready(function(){
$("#submitBut").click(function(){
var formData=getFormData();
var strUrl="rwcntrlr.do?action=loginForm";
$.post(strUrl, {jsonData: JSON.stringify(formData)},function(response){
response = jQuery.parseJSON( response);
if(response.message=='not ok')
{
alert("not ok");
}
else{
alert('OK');
}
});
});
});
</script>
的servlet
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String formName=request.getParameter("action");
if(formName.equalsIgnoreCase("loginForm")){
String strJSONData = request.getParameter("jsonData");
System.out.println(strJSONData);// data received correctly...
JSONObject jsonResponse = new JSONObject();
try{
JSONObject requestedJSONObject = new JSONObject(strJSONData);
String login_name = requestedJSONObject.getString("login_name");
String password = requestedJSONObject.getString("password");
if(login_name.equalsIgnoreCase("mark")){
response.setContentType("application/json");
jsonResponse.put("status", "OK");
response.getWriter().write(jsonResponse.toString());
}
else{
response.setContentType("application/json");
jsonResponse.put("status", "NOT OK");
response.getWriter().write(jsonResponse.toString());
}
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
在上面的代码中,我能够在我的servlet控制器中以JSON模式获取表单数据。
但我无法根据servlet作为响应发送的JSON类型消息向jsp页面显示有效的警报框。
答案 0 :(得分:1)
要写入回复,您应该使用类似
的内容response.setContentType("application/json");
response.setHeader("cache-control", "no-cache");
PrintWriter out = response.getWriter();
out.println(jsonResponse.toString());
out.flush();
请注意,缓存控制通常会阻止浏览器缓存该值。写入文本的文本太小,无法填充缓冲区。在返回响应之前刷新缓冲区。如果设置内容类型&#34; application / json&#34;你不需要解析对象,除非它通过jQuery转换为文本。使用dataType: 'json'
选项获取JSON对象。
$.post(strUrl, {jsonData: JSON.stringify(formData)},
function(response){
if(response.status=='NOT OK') {
alert("not ok");
} else {
alert('OK');
}
}, 'json');
答案 1 :(得分:0)
可能是那个
if(response.message=='not ok')
应该是
if(response.status=='not ok')
因为你把
jsonResponse.put("status", "NOT OK");