從我的客戶端代碼中,我正在對我的servlet進行AJAX調用。如果我使用GET作爲請求方法。一切正常,我得到迴應。但是當我將請求作爲POST發送時,servlet無法發送響應。從日誌中我發現,在使用POST進行ajax調用時,servlet中的「request」對象爲null。根據這篇文章: Servlet response to AJAX request is empty,我爲同源策略設置標題。向Servlet發出AJAX POST請求失敗
下面是我的參考代碼:
function aimslc_ajaxCall(url,callback, postParams){
var xmlhttp = null
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
eval(callback+"("+xmlhttp.responseText+")");
}
}
if(postParams!=null && typeof postParams!="undefined"){
xmlhttp.open("POST",url,true);
xmlhttp.send(postParams);
}else{
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
}
servlet代碼:
public void doProcess (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("doProcess::start..."+request.getQueryString());
response.setHeader("P3P","CP='NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM'");
response.setHeader("Access-Control-Allow-Origin","*");
response.setHeader("Access-Control-Allow-Credentials","true");
response.setHeader("Access-Control-Allow-Methods","POST, GET");
}
拋出的request.getQueryString()
在ajax中檢查你的if語句,好像它總是執行沒有任何有效載荷的xmlhttp.send()。嘗試提醒以檢查每次選擇哪個條件選項。 – doNotCheckMyBlog
其實如果沒有參數,我用GET方法發出請求。編輯代碼,使其更清晰 – indusBull