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 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么