簡體   English   中英

Ajax 響應返回 null

[英]Ajax response returning null

我是 Ajax 的新手,剛剛開始學習,我已經設法將數據傳遞給我的 servlet,但是一旦我寫回它,然后嘗試從我的網頁中讀取它,它就會返回 undefined 這是我的代碼:

爪哇:

@WebServlet("/PeriodHandler")
public class PeriodHandler extends HttpServlet {

private static Connection conn = UserHandler.conn;
private String periodList;
public String date;

public PeriodHandler(){
    super();
}   

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
    response.setContentType("text/xml");
    System.out.println(request.getParameter("date"));
    response.getWriter().println("<responseFromServer>The date is" + request.getParameter("date")+"</responseFromServer>");        
}
}

Javascript:

function sendData() {
            xmlhttp.open("POST", "PeriodHandler?date=" +document.getElementById('dates').value, true);
            xmlhttp.onreadystatechange=recievedMessageFromServer;  
            xmlhttp.send();                
        }
function recievedMessageFromServer(){
            if(xmlhttp.readyState===4 && xmlhttp.status===200){
                var date = xmlhttp.responseXML.documentElement.getElementsByTagName("responseFromServer")[0];
                alert(date);
            }
        }

我希望有人能指出我正確的方向,謝謝

responseFromServer是根元素。 嘗試將其包裝在另一個內部並訪問responseFromServer

//Java
response.getWriter().println("<root><responseFromServer>The date is" + request.getParameter("date")+"</responseFromServer></root>");

//Ajax - No change
var date = xmlhttp.responseXML.documentElement.getElementsByTagName("responseFromServer")[0];

這里的想法是當您調用xmlhttp.responseXML.documentElement它會從根開始。 因此,它檢查responseFromServer為的子元素標簽responseFromServer 如果你不想要一個根,你應該刪除documentElement部分,如

//Java - No change
response.getWriter().println("<responseFromServer>The date is" + request.getParameter("date")+"</responseFromServer>");

//Ajax
var date = xmlhttp.responseXML.getElementsByTagName("responseFromServer")[0];

沒關系已經發現了問題,感謝 Syam S 為我指出正確的方向,以及任何與我有同樣問題的人,這里是解決方案。

var date = xmlhttp.responseXML.getElementsByTagName("responseFromServer")[0].childNodes[0].nodeValue;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM