前端 $.ajax({type:"POST", ...}) 送出請求,後端 doPost 收到資料並處理,但瀏覽器回報 405 Method Not Allowed。
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp); // <-- 罪魁禍首
// ... 後續邏輯
}
HttpServlet 預設 doPost 實作會直接回傳 405 (不支援 POST)。呼叫 super.doPost() 會**先送出 405 回應**,導致後續 PrintWriter 寫入失敗、連線關閉,瀏覽器收到錯誤狀態碼。
**移除 super.doPost(req, resp);**,直接撰寫業務邏輯:
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/json;charset=UTF-8"); // 回傳 JSON 建議
// 讀取參數、處理邏輯
PrintWriter pw = resp.getWriter();
pw.print(jsonResult);
pw.flush();
}
doPost 是否已處理回應。dataType:"json" 需後端回傳合法 JSON 字串,而非物件 toString()。