[英]Ajax response returning null
I'm new to Ajax and am just starting to learn, I have managed to get data passed to my servlet but once i write back to it and then try to read from it from my web page it returns undefined Here is my code:我是 Ajax 的新手,刚刚开始学习,我已经设法将数据传递给我的 servlet,但是一旦我写回它,然后尝试从我的网页中读取它,它就会返回 undefined 这是我的代码:
Java:爪哇:
@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: 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);
}
}
I hope someone could point me in the right direction, thanks我希望有人能指出我正确的方向,谢谢
responseFromServer
is the root element. responseFromServer
是根元素。 Try wrapping it inside another and access 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];
The idea here is when you call xmlhttp.responseXML.documentElement
it starts from the root.这里的想法是当您调用
xmlhttp.responseXML.documentElement
它会从根开始。 So its checks responseFromServer
tag for a child element of responseFromServer
.因此,它检查
responseFromServer
为的子元素标签responseFromServer
。 If you dont want a root you could should remove the documentElement
part like如果你不想要一个根,你应该删除
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.