自作したサーブレットに対してAJAXでPOST送信したのですが、AJAXの結果が上手く受け取れません。
Firefoxのデバッガで見ると「整形式になっていません。」と表示されており、該当のエラー行をクリックすると
「<html><head><title>Error</title></head><body>HTTPのGETメソッドは、このURLではサポートされていません。</body></html>」
と表示されます。
サーブレットにブレイクポイントを設定してデバッグしたところ、サーブレットには処理が来ていました。
おそらくサーブレットが返すレスポンスを受け取れないのかな、と考えています。
以下のように実装しています。※業務内容になる為、一部名称は変更しました。
[クライアント]
JavaScript
1 function checkArrival() { 2 clearTimeout(timer); 3 var hasNewArrival = false; 4 var xxxForm = $("#xxxForm"); 5 $.ajax({type : "POST", 6 url : "/aaa/bbb/TestServlet", 7 async : true, 8 data : xxxForm .serialize(), 9 dataType : "json", 10 success : function(json){ 11 hasNewArrival = json.newArrival; 12 }, 13 error : function(XMLHttpRequest, textStatus, errorThrown){ 14 console.log("Check new arrival error. status :" + textStatus); 15 }}); 16 17 if (!hasNewArrival) { 18 timer= setTimeout(checkArrival, 5000); 19 return; 20 } 21
[サーブレット]
Java
1 2public class TestServlet extends HttpServlet { 3 private static final String CONTENT_TYPE = "ContentType"; 4 5 private static final String CONTENT_TYPE_JSON = "application/json"; 6 7 @Override 8 protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException { 9 doProcess(req, res); 10 } 11 protected void doProcess(HttpServletRequest req, HttpServletResponse res) throws IOException { 12 // 略 13 sendNormalResonse(res, result); 14 } 15 16 protected void sendNormalResonse(HttpServletResponse res, boolean result) throws IOException { 17 18 // 略 19 ObjectMapper mapper = new ObjectMapper(); 20 String bodyString = mapper.writeValueAsString(response); 21 res.setHeader(CONTENT_TYPE, CONTENT_TYPE_JSON); 22 res.setStatus(HttpServletResponse.SC_OK); 23 res.getWriter().write(bodyString); 24 } 25} 26
Ajax⇔Servletの実装は初めてなので、おかしな実装がないかご指摘頂けると助かります。
宜しくお願いいたします。
回答3件
あなたの回答
tips
プレビュー