weixin_33714884 2015-03-03 18:11 采纳率: 0%
浏览 37

Ajax响应返回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:

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:

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

  • 写回答

2条回答 默认 最新

  • perhaps? 2015-03-03 18:25
    关注

    responseFromServer is the root element. Try wrapping it inside another and access 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. So its checks responseFromServer tag for a child element of responseFromServer. If you dont want a root you could should remove the documentElement part like

    //Java - No change
    response.getWriter().println("<responseFromServer>The date is" + request.getParameter("date")+"</responseFromServer>");
    
    //Ajax
    var date = xmlhttp.responseXML.getElementsByTagName("responseFromServer")[0];
    
    评论

报告相同问题?

悬赏问题

  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 vue3加ant-design-vue无法渲染出页面
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏